C++ 短c++;从括号内的初始值设定项列表中创建类构造函数

C++ 短c++;从括号内的初始值设定项列表中创建类构造函数,c++,class,constructor,initializer-list,C++,Class,Constructor,Initializer List,以下核心部分工作良好: 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 } ??? 上面的那个不行 有较短的表格吗 不是。除了几个空格之外,这个构造函数尽可能短 有较

以下核心部分工作良好:

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问题似乎是,是否可以将
制作成obj{1,2};
在默认构造函数显式存在时,无需写出完整的
A(int A,int b)
构造函数即可工作。为什么需要默认构造函数?也许可以改为在类成员初始化中使用(如下所示:
类A{public:int A=1;int b=2;};
)编译器生成的构造函数有什么好处?你想写一个更短的构造函数吗?@Frontear问题似乎是,如果不写出完整的
a(inta,intb),就可以使
a对象{1,2};
工作当默认构造函数显式存在时,
构造函数。为什么需要默认构造函数?也许可以改为在类成员初始化中使用(如:
类a{public:int a=1;int b=2;};
),并具有编译器生成的构造函数的所有优点?
A(int a, int b):a(a), b(b) {}.