拥有一个聚合公共基类(甚至是多个聚合公共基类)会使一个类失去聚合类的优良属性是什么意思?
“聚合基类”的定义来自 http://en.cppreference.com/w/cpp/language/aggregate_initialization http://en.wikipedia.org/wiki/C++_classes#Aggregate_classes
聚合类的优点:
- 在不定义构造函数的情况下,可以通过传入用大括号括起来的值列表来初始化聚合类型,以初始化其成员(或基类,如果它们允许的话)。
- 聚合类型被认为是“简单的”(POD的泛化),并且可以用作
constexpr
s的文字类型。
来自http://en.cppreference.com/w/cpp/language/aggregate_initialization#Example的简化示例:
#include <string>
#include <array>
struct S {
int x;
struct Foo {
int i;
int j;
int a[3];
} b;
};
int main()
{
S s1 = { 1, { 2, 3, {4, 5, 6} } };
S s2 = { 1, 2, 3, 4, 5, 6}; // same, but with brace elision
}
另请参阅: 什么是聚合和 POD,它们如何/为什么特别?