微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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),第二个构造函数将使用传递的值进行初始化(这也不能保证是好的!).

原文地址:https://www.jb51.cc/c/116531.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐