c++ - 我可以从现在开始创建一个变量 _const 吗?

标签 c++ constructor reference constants

我正在使用一个库,该库的类具有一个不同于其构造函数的 init 函数。每次我创建一个新实例时,我都需要调用,例如:

MyClass a;
a.init();

由于 init 不是 const,这会阻止我创建 const 实例(我无法编写 const MyClass a)。有什么方法可以调用 init 然后从“here on out”声明(我猜对于范围的其余部分)我的变量是 const

这可行,但依赖于不触及原始变量:

MyClass dont_touch;
dont_touch.init();
const MyClass & a = dont_touch;

最佳答案

如果你使用 C++11,你可以使用 lambda 函数

const MyClass ConstantVal = []{ 
    MyClass a;
    a.init(); 
    return a; 
}();

这允许您保持初始化,同时永远不会让外部访问可变对象。 也可以看看: http://herbsutter.com/2013/04/05/complex-initialization-for-a-const-variable/

关于c++ - 我可以从现在开始创建一个变量 _const 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399868/

相关文章:

java - 有人可以解释在 String 类中被覆盖的 toString 方法的源代码吗?

java - 尝试结束 session 时应用程序崩溃..空对象引用

c++ - 如何实现仅在堆栈上分配的字符串

c++ - 从增强融合适应结构中获取成员类型列表

c++ - 双向链表 : Properly deleting an adding something in the middle of a list?

java - 每次我实例化新对象时,属性都会回到零

javascript - JS构造函数的返回值

java - 使用反射创建带有构造函数参数的对象

c++ - 在 C 中使用重载的 C++ 函数

c# - 通过引用传递和使用 ref