C ++:结构/类中的构造函数与初始化列表
-
21-09-2019 - |
题
结构/类的对象(没有 构造函数)可以使用一个 初始化列表. 。为什么不允许在结构/类上 构造函数?
struct r { int a; };
struct s { int a; s() : a(0) {} };
r = { 1 }; // works
s = { 1 }; // does not work
解决方案
不,带有构造函数的对象不再被视为POD(普通的旧数据)。对象必须仅包含其他POD类型作为非静态成员(包括基本类型)。 POD可以具有静态功能和静态复杂数据成员。
请注意,即将到来的C ++标准将允许您定义初始化器列表,这将允许使用括号初始化非POD对象。
其他提示
如果通过您的问题,您的意思是问:“我可以这样做:”
struct MyGizmo
{
char things_[5];
MyGizmo() : things_({'a', 'b', 'c', 'd', 'e'}) ();
};
...然后答案是否定的。 C ++不允许这样做。
不隶属于 StackOverflow