下面的程序编译(使用 gcc),但应该编译吗?我会认为下面创建的 V1(1.0) 是一个常量,因此无法在其上调用非 const 方法。
class V{
double v;
public:
V(double v1){ v = v1;}
void clear(){ v = 0;}
};
int main(){
V(1.0).clear();
}
将此与不能称为“f(1)”的函数“void f(int &t){}”进行比较,因为 1 是一个常数,不能作为非常量引用 t 的值。