4

我的一些同事更喜欢在构造函数初始化列表中显式初始化std::auto_ptr0,但它会0在其构造函数中初始化为,而无需任何显式初始化。那么有什么理由这样做吗?

#include <memory>

class A
{
  A() : SomePtr(0)
  {
  }

private:
  std::auto_ptr<SomeType> SomePtr;
};
4

3 回答 3

9

不,默认构造函数std::auto_ptr就是这样做的,所以没有必要明确地这样做。无论如何,这是一个风格问题,你应该保持一致。例如,您会在构造函数初始化列表中显式调用成员向量的默认构造函数吗?

作为旁注,std::auto_ptr在即将发布的标准中已弃用

于 2011-10-06T09:23:51.937 回答
0

心理学。

对于内置类型,您可能已经知道它们未初始化,除非您明确这样做。对于类,情况并非如此。

努力保持一致性会导致到处显式初始化。这使您可以忘记A::SomePtr是内置类型还是类类型。很没用,恕我直言,因为内置类型的数量非常有限。

于 2011-10-06T09:27:35.137 回答
0

一个原因可能是清晰,但这应该是唯一的一个。我自己不喜欢编写不必要的初始化,特别是如果这完全使我不必为周围的类编写默认构造函数,而只是让编译器完成它的工作。虽然这只是风格问题,但我认为过于偏执甚至会损害代码的清晰度。

于 2011-10-06T09:28:49.707 回答