大括号括起来的初始值设定项列表中的短 c++ 类构造函数

Short c++ class constructor from brace-enclosed initializer list

本文关键字:列表 c++ 构造函数 起来      更新时间:2023-10-16

以下核心工作正常:

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) {}.

有没有更短的形式

不。除了几个空格之外,此构造函数尽可能短。

不幸的是不是。

创建默认构造函数时,您阻止自己使用聚合初始化初始化类。

为了能够恢复使用该声明语法的能力,您必须创建另一个接受所有必要参数的构造函数......没有比您编写的更短的方法了。