这可能听起来太基础,让人觉得我没有尽力去寻找答案,但是我发誓我搜索了大约20分钟,没有找到答案。
如果一个私有的C++类成员变量(非静态)是一个指针,并且在构造函数中没有被初始化(无论是通过初始化列表还是在构造函数中进行赋值),那么当类完全实例化时它的值会是什么?
奖励问题:如果以上问题的答案不是NULL,而我希望始终将一个特定的成员指针变量初始化为NULL,并且我有多个构造函数,我真的必须在每个构造函数中都写一个显式初始化吗?如果是这样,专业人士如何处理?他们肯定不会在所有构造函数中都为相同的成员变量放置冗余的初始化程序,对吧?
编辑:我希望我能在这里选择两个答案。Bleep Bloop 推荐的智能指针似乎是最优雅的方法,它得到了最多的赞。但由于我还没有在我的工作中使用智能指针,所以我选择了没有使用智能指针的最具说明性的答案。
NULL
/nullptr
。如果我有多个需要进行公共初始化的构造函数,我倾向于实现一个私有的commonConstruct()
方法,该方法为我执行默认初始化。 - Moo-Juice0
或0L
。不过,在C++11中,你实际上有一个nullptr
关键字。最大的优点是,现在你可以区分一个指向null的指针和一个整数0:) - Moo-Juice