C++:结构/类中的构造函数与初始化列表
结构/类的对象(没有构造函数)可以使用初始化列表创建。为什么在具有构造函数的结构/类上不允许这样做?
struct r { int a; };
struct s { int a; s() : a(0) {} };
r = { 1 }; // works
s = { 1 }; // does not work
An object of a struct/class (that has no constructor) can be created using an initializer list. Why is this not allowed on struct/class with constructor?
struct r { int a; };
struct s { int a; s() : a(0) {} };
r = { 1 }; // works
s = { 1 }; // does not work
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不,具有构造函数的对象不再被视为 POD(普通旧数据)。对象只能包含其他 POD 类型作为非静态成员(包括基本类型)。 POD 可以具有静态函数和静态复杂数据成员。
请注意,即将推出的 C++ 标准将允许您定义初始化列表,这将允许使用大括号初始化非 POD 对象。
No, an object with a constructor is no longer considered a POD (plain old data). Objects must only contain other POD types as non-static members (including basic types). A POD can have static functions and static complex data members.
Note that the upcoming C++ standard will allow you to define initializer lists, which will allow non-POD objects to be initialized with braces.
如果您的问题是想问“我可以这样做吗:”
……那么答案是否定的。 C++ 不允许这样做。
If by your question you mean to ask, "Can I do this:"
...then the answer is no. C++ doesn't allow this.