【发布时间】:2015-01-22 13:43:46
【问题描述】:
我目前正在使用 VS2012,并且期望此代码中的语句 B 失败,因为我们正在将一个 temp 常量传递给 foo 类中的赋值运算符方法。令人惊讶的是,这并没有失败,为什么?声明 A 失败,这很好。为什么语句 B 没有失败?
struct foo
{
int a;
foo& operator=(foo& that)
{
a=12;
return *this;
}
};
int main()
{
const foo a;
foo b;
//b = a; //statement A
b = foo(); //Statement B
}
【问题讨论】:
-
最新的带有高警告的VS应该对此发出警告。