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

前端之家收集整理的这篇文章主要介绍了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&C++相关文章