以下核心工作正常:
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 } ???
上面的那个不起作用。
A(int a, int b):a(a), b(b) {}.
有没有更短的形式
不。除了几个空格之外,此构造函数尽可能短。
不幸的是不是。
创建默认构造函数时,您阻止自己使用聚合初始化初始化类。
为了能够恢复使用该声明语法的能力,您必须创建另一个接受所有必要参数的构造函数......没有比您编写的更短的方法了。