【发布时间】:2016-10-15 13:43:08
【问题描述】:
这个问题涉及任何 C++ 普通数据定义,其中有一个构造函数,该构造函数将所有数据成员作为参数并初始化它们。这种过度扩展的初始化列表的唯一原因是为了防止只指定结构的一部分的错误。
这是编写这种结构的典型方法:
struct Struct {
A a;
B b;
C c;
Struct(A a, B b, C c) : a(a) , b(b), c(c) {}
};
值得注意的是,每个成员的类型写了两次,名字写了四次。实际上,这意味着此类结构的代码是相当可压缩的。有没有更短的方法可以用 C++ 编写这个结构?
【问题讨论】:
-
C++ 相当冗长,我认为没有。一个警告:您应该使用(例如)
a{a}, b{b}, c{c},因为统一初始化优于旧的( )初始化(请参阅this question) -
这个类不是一个普通的旧数据类,因为它没有默认构造函数。您需要添加
Struct() = default;