【发布时间】:2016-03-28 20:28:15
【问题描述】:
class A { public: int x[100]; };
声明A a 不会初始化对象(被x 字段中的垃圾值看到)。
以下将触发初始化:A a{} 或 auto a = A() 或 auto a = A{}。
是否应该优先选择这三个中的任何一个?
接下来,让我们让它成为另一个类的成员:
class B { public: A a; };
B 的默认构造函数似乎负责 a 的初始化。
但是,如果使用自定义构造函数,我必须处理它。
以下两个选项有效:
class B { public: A a; B() : a() { } };
或:
class B { public: A a{}; B() { } };
是否应该首选两者中的任何一个?
【问题讨论】:
-
请澄清有关您希望使用初始化程序的上下文的问题。你只对空初始化器感兴趣吗?您是否希望为复杂对象确定更通用的方法?
标签: c++11 initialization class-members