我的一些同事更喜欢在构造函数初始化列表中显式初始化std::auto_ptr
到0
,但它将在其构造函数中初始化为0
,而不进行任何显式初始化。那么有什么理由去做吗?
#include <memory>
class A
{
A() : SomePtr(0)
{
}
private:
std::auto_ptr<SomeType> SomePtr;
};
答案 0 :(得分:9)
不,std::auto_ptr
的默认构造函数就是这样做的,因此没有必要明确地这样做。无论如何,这是一个风格问题,你应该保持一致。例如,您是否会在构造函数初始化列表中显式调用成员向量的默认构造函数?
作为旁注,std::auto_ptr
在即将推出的标准
答案 1 :(得分:0)
心理学。
对于内置类型,您可能已经知道它们未初始化,除非您明确这样做。对于课程,情况并非如此。
努力实现一致性会导致各处显式初始化。这允许您忘记A::SomePtr
是内置类还是类类型。由于内置类型的数量非常有限,因此非常无用,imho。
答案 2 :(得分:0)
一个原因可能是清晰,但这应该是唯一的原因。我自己更喜欢不写不必要的初始化,特别是如果这完全不让我为周围的类编写默认构造函数而只是让编译器完成它的工作。虽然它仅仅是一种风格问题,但我认为过多的偏执甚至会损害代码的清晰度。