首页 >后端开发 >C++ >为什么我不能直接在 C 中初始化构造函数中的 `const` 字段?

为什么我不能直接在 C 中初始化构造函数中的 `const` 字段?

Susan Sarandon
Susan Sarandon原创
2024-11-03 12:50:31207浏览

Why Can't I Initialize a `const` Field in a Constructor Directly in C  ?

在构造函数中初始化 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn