这听起来很基本,以至于让人觉得我自己找到答案的努力为零,但我发誓我确实搜索了大约 20 分钟,但没有找到答案。
如果私有 c++ 类成员变量(非静态)是一个指针,并且它没有在构造函数中初始化(通过初始化列表或构造函数中的赋值),那么当类完全实例化时,它的值是多少?
奖励问题:如果上述问题的答案不是 NULL,并且我希望始终将特定的成员指针变量初始化为 NULL,并且我有多个构造函数,我真的必须在每个我写的构造函数?如果是这样,专业人士如何处理这个问题?肯定没有人真正在其所有构造函数中为同一个成员放置冗余初始化器,是吗?
编辑: 我希望我能在这里选择两个答案。 Bleep Bloop 推荐的智能指针似乎是最优雅的方法,并且获得了最多的支持。但是由于我在工作中实际上并没有使用智能指针(还),所以我选择了没有使用智能指针的最具说明性的答案作为答案。
原文由 John Fitzpatrick 发布,翻译遵循 CC BY-SA 4.0 许可协议
你的想法是正确的。如果你不初始化它,它可能是任何东西。
所以你的问题的答案是,要么用一些东西初始化它,要么给它一个 NULL(或 nullptr,在最新的 C++ 标准中)。
我们这里的默认 ctor 将其设为 NULL(如果需要,请替换为
nullptr
),第二个构造函数将使用传递的值对其进行初始化(这也不能保证是好的!)。