15-1 聚合类型的定义
聚合类型的定义
C++ 17标准对聚合类型的定义做出了大幅修改:
-
没有用户提供的构造函数
-
没有私有和受保护的非静态数据成员
-
没有虚函数
如果该类是从另一个类继承而来,对于基类,有额外的条件:
-
必须是公有继承
-
必须是非虚继承
注意:基类并非要求是聚合类型。
1. 判断聚合类型的方法
在标准库<type_traits>
中,提供了一种对聚合类型的甄别方法:is_aggregate
。
|
注意:在上面的代码中,MyString
是聚合类型,其基类std::string
不是,但是不影响其派生类是聚合类型。
发布于