1 类中默认的构造函数
默认的构造函数: 当类中没有定义构造函数, 编译器会默认提供一个无参构造函数且其函数体为空.
默认的拷贝构造函数: 当类中没有定义拷贝构造函数,编译器会默认提供一个拷贝构造函数,只执行成员变量的拷贝(即浅拷贝).
2 构造函数
2.1 构造函数的定义:
2.1.1 无参构造函数
类名::类名() : 参数构造列表
{
构造函数体
}
2.1.2 有参构造函数
类名::类名(参数1, 参数2, ... , 参数n) : 参数构造列表
{
构造函数体
}
2.2 构造函数的调用:
2.2.1显示调用
类名 变量名 = 类名(参数1, 参数2, ... , 参数n)
2.2.2隐式调用
类名 变量名(参数1, 参数2, ... , 参数n)
3 拷贝构造函数
3.1 拷贝构造函数的定义:
类名::类名(类名 &)
{
//拷贝构造函数体
}
3.2 拷贝构造函数的调用:
3.2.1类名 变量名1(变量名2)
3.2.2类名 变量名1 = 变量名2
拷贝构造函数分为: 浅拷贝与深拷贝
- 例子
class Rectangle
{
public:
Rectangle();
Rectangle(int w, int h);
Rectangle(Rectangle &);
int getWidth();
int getHeight();
int setWidth(int);
int setHeight(int);
private:
int width;
int height;
};
Rectangle rect(1, 2); // 隐式调用构造函数
Rectangle rect2 = Rectangle(1, 2); // 显示调用构造函数,并调用拷贝构造函数
Rectangle rect3(rect2); //调用拷贝构造函数
Rectangle rect4 = rect2; //调用拷贝构造函数