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

这听起来是非常基本的,因为我觉得我没有努力找到自己的答案,但我发誓我搜索约20分钟,没有找到答案.

如果私有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&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...