【发布时间】:2020-04-11 00:39:26
【问题描述】:
以下核心工作正常:
class A {
public:
int a;
int b;
};
A obj{ 1, 2 };
但是,如果显式添加默认构造函数:A(){},则必须为大括号括起来的初始值设定项列表添加另一个,例如:
A(int a, int b):a(a), b(b) {}.
是否有更短的形式,例如:
A(const A& ab) { *this = ab } ???
上面那个不行。
【问题讨论】:
-
你要写一个更短的构造函数吗?
-
@Frontear 似乎问题是,当显式存在默认构造函数时,是否可以在不写出完整的
A(int a, int b)构造函数的情况下使A obj{ 1, 2 };工作。 -
为什么需要默认构造函数?也许您可以改用类内成员初始化(例如:
class A { public: int a = 1; int b = 2; };)并获得编译器生成的构造函数的所有好处?
标签: c++ class constructor initializer-list