C++避免键入构造函数

C++ Avoid typing out constructor

本文关键字:构造函数 C++      更新时间:2024-04-28

我有一个结构,例如有16个字段,以后想用initalizer列表初始化该结构。

有没有一种方法可以避免在构造函数中重新键入所有它们(假设我想按照确切的顺序初始化所有它们(?即使它们都是普通的旧数据?

除了乏味之外,在我看来还有一些我不知道的方法可以做到这一点。

struct Foo {
int  A;
int  B;
Bar* C;
// ...
Foo (
int  A,
int  B,
Bar* C,
// ...
) :
A(A),
B(B),
C(C),
// ...
{} 
}
Foo MyFoo = {
// ...
}

由于您的数据成员是公共的,因此实际上您可以通过减少代码量来做到这一点。根本不提供构造函数:

struct Foo {
int  A;
int  B;
Bar* C;
// ...
};

然后你可以构建一个Foo,如下所示:

Foo foo{1, 2, new Bar{}, /* ... */ };

Foo foo = {1, 2, new Bar{}, /* ... */ };