可以使用初始化列表创建结构/类的对象(没有构造函数)。为什么在构造函数的结构/类中不允许这样做?
struct r { int a; };
struct s { int a; s() : a(0) {} };
r = { 1 }; // works
s = { 1 }; // does not work
答案 0 :(得分:14)
不,具有构造函数的对象不再被视为POD(普通旧数据)。对象必须仅包含其他POD类型作为非静态成员(包括基本类型)。 POD可以具有静态函数和静态复杂数据成员。
请注意,即将推出的C ++标准将允许您定义初始化列表,这将允许使用大括号初始化非POD对象。
答案 1 :(得分:0)
如果你的问题是你的意思,“我可以这样做:”
struct MyGizmo
{
char things_[5];
MyGizmo() : things_({'a', 'b', 'c', 'd', 'e'}) ();
};
...然后答案是否定的。 C ++不允许这样做。