C++构造函数分为:
- 编译器提供的默认构造函数
- 缺省构造函数
- 拷贝构造函数
编译器提供的默认构造函数只在一下3种情况下提供:
1、如果类有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时;
2、如果类的基类有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数);
3、在类中的所有非静态的对象数据成员,它们对应的类中有构造函数(可以是用户定义的构造函数,或 编译器提供的默认构造函数)。
<类名>::<类名>(){},默认构造函数不执行任何操作
拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。
如果在类中没有显式的声明一个拷贝构造函数,那么,编译器会自动生成一个隐式拷贝函数来进行对象之间非static成员的位拷贝(Bitwise Copy)。