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