在c++ 2011中为变量设置默认值

Setting default values for ivars in C++ 2011

本文关键字:变量 设置 默认值 c++ 2011      更新时间:2023-10-16

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

  class A{
    MyType T=MyValue;
   }

这个想法是,MyType在类实例化时已经被定义为默认值。

但是我需要澄清的是,是否仍然建议对这个变量使用构造函数的成员初始化列表。如果是这样,那么像上面那样设置默认值有什么意义呢?

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

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

可以在初始化器列表中重写内联初始化器,但这在风格上存在问题。如果有疑问,请不要这样做,并/或咨询项目的样式指南。

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

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