gpt4 book ai didi

c++ - C++ 类中的指针成员变量初始化

转载 作者:IT老高 更新时间:2023-10-28 22:13:38 31 4
gpt4 key购买 nike

这听起来很简单,以至于让人觉得我自己找到答案的努力为零,但我发誓我确实搜索了大约 20 分钟,但没有找到答案。

如果一个私有(private) c++ 类成员变量(非静态)是一个指针,并且它没有在构造函数中初始化(通过初始化列表或构造函数中的赋值),当类被初始化时,它的值是多少?完全实例化?

奖励问题:如果上述问题的答案不是 NULL,并且我希望始终将特定的成员指针变量初始化为 NULL,并且我有多个构造函数,我真的必须为此进行显式初始化吗?我写的每个构造函数中的指针?如果是这样,专业人士如何处理这个问题?肯定没有人真正在其所有构造函数中为同一个成员放置冗余初始化器,不是吗?

编辑:我希望我能在这里选择两个答案。 Bleep Bloop 推荐的智能指针似乎是最优雅的方法,并且获得了最多的支持。但由于我在工作中(还)实际上并没有使用智能指针,所以我选择了没有使用智能指针的最具说明性的答案。

最佳答案

你的想法是正确的。如果你不初始化它,它可能是任何东西。

所以你的问题的答案是,要么用一些东西初始化它,要么给它一个 NULL(或 nullptr,在最新的 C++ 标准中)。

class A
{
};


class B
{
private:
A* a_;

public:
B() : a_(NULL) { };
B(a* a) : a_(a) { };
};

我们这里的默认 ctor 将其设为 NULL(如果需要,替换为 nullptr),第二个构造函数将使用传递的值对其进行初始化(这也不能保证是好的!)。

关于c++ - C++ 类中的指针成员变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406931/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com