c++ - 常量对象使什么常量?

标签 c++ object constants

根据我的测试,对象在创建后仍然可以修改。

//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); 

创建f2f2可以在构造函数体中修改它自己的数据成员。一旦构造函数的主体退出,对象就被完全构造并且不能被修改。

有几点值得一提:

  • 如果varconst,那么您必须在构造函数的初始化列表中对其进行初始化,并且不能在构造函数的主体中对其进行修改。这与您是否拥有 const Foo 实例无关。
  • 如果 var 被声明为 mutable,则可以通过 const 修改 const Foo 实例> 修改 var 的方法。

关于c++ - 常量对象使什么常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551375/

相关文章:

java - 如何为java对象生成校验和

c++ - 该对象具有与覆盖 draw 的成员函数 sfml 不兼容的类型限定符

c++ - "non-const lvalue reference to type cannot bind"引用错误(类型&)但指针错误(类型*)

javascript - 向现有 javascript 对象添加新属性

PHP将对象转换为字符串

c# - 如何在 C# 中声明反斜杠常量字符?

c++ - 使用 gsoap 的多个同时客户端

c++ - 无法通过 "undefined reference to ` XXXX'”

c++ - 未定义的行为和顺序点

c++ - 运算符重载插入