当C++中的类或结构具有编译器提供的或显式默认的特殊成员函数时,则为普通类型。它占用一个连续的内存区域。它可以具有具有不同访问说明符的成员。
普通类型具有普通默认构造函数,普通副本构造函数,普通副本赋值运算符和普通析构函数。在每种情况下,琐碎的事情都意味着构造函数/运算符/析构函数不是用户提供的,而是属于具有以下内容的类:
- 没有虚拟函数或虚拟基类,
- 没有具有对应的非平凡构造函数/运算符/析构函数的基类
- 没有具有相应的平凡构造函数/运算符/析构函数的类类型的数据成员
以下示例显示了普通类型:
/*Since there are no explicit constructors,
there exists a default constructor*/
struct Trivial {
int i;
private:
int j;
};
/* In Trivial2 structure, the presence of the
Trivial2(int a, int b) constructor requires
that you provide a default constructor. For
the type to qualify as trivial, we must
explicitly default that constructor.*/
struct Trivial2 {
int i;
Trivial2(int a, int b)
{
i = a;
}
Trivial2() = default;
};
参考: https : //msdn.microsoft.com/zh-cn/library/mt767760.aspx
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。