在构造函数中初始化 Const 字段
当定义一个带有 const 字段且在对象的整个生命周期中必须保持不可变的类时,初始化至关重要正确地。考虑以下场景:
问题陈述:
您想要创建一个 C 类 Bar,它接受 Foo 指针作为输入,并在其内部维护对它的不可变引用。寿命。以下代码无法编译:
<code class="cpp">class Foo; class Bar { public: Foo * const foo; Bar(Foo* foo) { this->foo = foo; } }; class Foo { public: int a; };</code>
解决方案:
要正确初始化构造函数中的 const 字段,需要使用初始化列表:
<code class="cpp">Bar(Foo* _foo) : foo(_foo) { }</code>
请注意,我们将传入参数重命名为 _foo 以避免名称冲突。
这种方法确保 foo 指针在 Bar 对象构造完成后立即被初始化,并且它对于其生命周期的持续时间。
以上是为什么我不能直接在 C 中初始化构造函数中的 `const` 字段?的详细内容。更多信息请关注PHP中文网其他相关文章!