根据我的测试,对象在创建后仍然可以修改。
//Let's use this copy constructor as an example:
Foo::Foo( const Foo& F )
{
var = F.var;
}
//With this code:
Foo f1;
const Foo f2(f1); //No Error?
没有初始化列表,因此 f2 在创建后被修改。那么,如果 Foo 的成员仍然可以修改,那么什么是常量?
最佳答案
f2
在创建后未被修改。这条线
const Foo f2(f1);
创建f2
,f2
可以在构造函数体中修改它自己的数据成员。一旦构造函数的主体退出,对象就被完全构造并且不能被修改。
有几点值得一提:
- 如果
var
是const
,那么您必须在构造函数的初始化列表中对其进行初始化,并且不能在构造函数的主体中对其进行修改。这与您是否拥有const
Foo
实例无关。 - 如果
var
被声明为mutable
,则可以通过const
修改const Foo
实例> 修改var
的方法。
关于c++ - 常量对象使什么常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551375/