【发布时间】:2018-11-15 02:41:38
【问题描述】:
struct foo
{
const int A;
int B;
foo() : A(10), B(20) {}
};
void main()
{
foo f1;
const_cast<int&>(f1.A) = 4; //line 1
const foo f2;
const_cast<int&>(f2.B) = 4; //line 2
}
第 1 行和第 2 行是否都表现出未定义的行为?如果f1 和f2 是上面代码中列出的类型的shared_ptr,行为会有所不同吗?
【问题讨论】:
-
不管什么数据类型失去了常量,问题是编译器可以假设对象没有改变并产生相关代码。
标签: c++ constants shared-ptr const-cast