首页 > 后端开发 > C++ > 如何在 C 构造函数中初始化 Const 成员变量?

如何在 C 构造函数中初始化 Const 成员变量?

Mary-Kate Olsen
发布: 2024-11-03 02:54:03
原创
380 人浏览过

How to Initialize a Const Member Variable in a C   Constructor?

如何在构造函数中初始化不可变字段:深入探索

在 C 语言中,可能会遇到这样的场景:您打算创建一个在其构造函数中需要不可变字段的类。在这种情况下,确保字段的不变性至关重要。本文将深入探讨实现此目标的正确方法。

考虑这样一个场景:类 Foo 作为数据结构,而类 Bar 是 Foo 的包装器,在构造过程中需要 Foo 指针作为参数。我们的目标是保证该指针在 Bar 实例的整个生命周期中保持不变。

尝试在 Bar 的构造函数中初始化 const 指针 foo 可能类似于以下内容:

<code class="cpp">class Foo;

class Bar {
public:
    Foo * const foo;
    Bar(Foo* foo) {
        this->foo = foo; // Compiler error
    }
};

class Foo {
public:
  int a;
};</code>
登录后复制

但是,这种方法会触发编译错误。为了纠正它并在 Bar 实例中建立 foo 的不变性,我们需要使用一个初始化列表:

<code class="cpp">Bar(Foo* _foo) : foo(_foo) {}</code>
登录后复制

在此修订版本中,构造函数将 Foo 指针作为参数,将其分配给成员变量 foo 使用初始值设定项列表,并重命名传入变量以避免与成员变量发生潜在混淆。

此技术确保 foo 指针在 Bar 构造时立即初始化,使其对于 Bar 的其余部分不可变实例的生命周期。

以上是如何在 C 构造函数中初始化 Const 成员变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板