我知道现在将 ivar 初始化为默认值是完全可以接受的:
class A{
MyType T=MyValue;
}
这个想法是MyType
在实例化类时已经将其定义为默认值。
但是我需要澄清的是,对于这个 ivar,是否仍然建议使用构造函数的成员初始化列表。如果是这样,那么如上所述设置默认值的意义何在?
如果类成员在所有构造函数中始终使用相同的值进行初始化,请使用内联初始化程序。这消除了冗余并很可能提高了可读性。
如果不同的构造函数以不同的方式初始化成员,请使用构造函数初始化列表。
可以覆盖初始化器列表中的内联初始化器,但这在风格上是有问题的。如果有疑问,请不要这样做,和/或查阅您项目的风格指南。
如果存在合理的默认值,则通过类内成员初始化程序设置成员变量的值允许为成员指定默认值。这避免了在默认值可接受的构造函数中重复默认初始化。如果默认值不可接受,则可以由构造函数的初始化程序列表覆盖默认值。
如果没有可接受的默认值,那么使用类内成员初始化器似乎毫无意义,因为每个构造函数都会显式地初始化它。