在C ++ 2011中设置ivars的默认值

时间:2013-05-09 08:14:44

标签: c++ c++11

我知道现在将ivar初始化为默认值是完全可以接受的:

  class A{
    MyType T=MyValue;
   }

我们的想法是,在实例化类时,MyType已被定义为默认值。

但我需要澄清的是,是否仍然建议使用构造函数的成员初始化列表。如果是这样,那么设置上述默认值是什么意思?

2 个答案:

答案 0 :(得分:2)

  • 如果在所有构造函数中始终使用相同的值初始化类成员,请使用内联初始值设定项。这消除了冗余,并且很可能提高了可读性。

  • 如果不同的构造函数以不同方式初始化成员,请使用构造函数初始化列表。

可以覆盖初始化列表中的内联初始值设定项,但这在风格上是有问题的。如果有疑问,请不要这样做,和/或查阅项目的样式指南。

答案 1 :(得分:1)

如果存在合理的默认值,则通过类内成员初始值设定项设置成员变量的值允许为成员指定默认值。这样可以避免在默认值可接受的构造函数中重复默认初始化。如果默认值不可接受,则构造函数的初始化列表可以覆盖默认值。

如果没有可接受的默认值,那么使用类内成员初始值设定器似乎毫无意义,因为每个构造函数都会显式初始化它。