12.1 / 5如果构造函数是隐式声明的默认构造函数并且如果:
,则构造函数是微不足道的- 它的类没有虚函数(10.3),也没有虚拟基础 类(10.1)和
- 该类的所有直接基类都有 琐碎的建设者,和 - 对于其所有非静态数据成员 类类型(或其数组)的类,每个类都有一个 琐碎的构造函数。
首先,我认为一个简单的构造函数只是一个隐式的默认构造函数。但是当在标准中阅读上面的文本时,看起来简单的构造函数不仅是一个隐式的默认构造函数,而且还有上面提到的其他要求。这是什么意思?有什么重要的建设者?
例如:
class X
{
// ...
};
类X是否具有普通或隐式默认构造函数?
答案 0 :(得分:2)
这取决于// ...
。
每个简单的构造函数都是隐式声明的默认构造函数,但并非每个隐式声明的默认构造函数都是一个简单的构造函数。如果它具有隐式默认值,则类X具有简单的析构函数,和其每个基类具有隐式默认值(以及那些基类的基础 - 类,等等,和其每个成员都是int
之类的原语,或者是具有隐式默认值的类型(以及其成员的成员,以及等等,以及它的成员的基类,它们的基类等,以及它们的基类的成员,它们的成员,等等,等等。 / p>
以相反的方式查看它可能更容易:如果一个类没有有一个简单的构造函数,那么没有扩展它的类(“is-a”)或包含它( “has-a”)也有一个简单的构造函数。
答案 1 :(得分:1)
琐碎的构造函数什么都不做。帖子中的列表表示构造函数在以下情况下是微不足道的:
这些规则合在一起意味着构造函数无关,因此琐事。
如果是X
,这一切都取决于它的数据成员:如果它们都有简单的构造函数,如果你自己没有提供一个非平凡的构造函数,X
将有一个简单的构造函数太