Программа ниже компилируется (с помощью gcc), но должна ли она? Я бы подумал, что V1(1.0), созданная ниже, является константой, и поэтому для нее нельзя вызвать неконстантный метод.
class V{
double v;
public:
V(double v1){ v = v1;}
void clear(){ v = 0;}
};
int main(){
V(1.0).clear();
}
Сравните это с функцией «void f(int &t){}», которую нельзя вызвать как «f(1)», потому что 1 — это константа, которая не может быть значением для неконстантной ссылки t.
const
. Ключевое слово не появляется нигде в вашем коде. Кроме того, синтаксис инициализации члена. - person chris   schedule 24.04.2012void f(int &t){}
. Немного другая, но очень похожая концепция. - person chris   schedule 24.04.2012