拷贝构造函数
拷贝构造函数是一种特殊的构造函数,由编译器自己调用,创建对象时用已有的同类对象进行初始化,只有一个参数,而且改下形参是对本类对象的引用常用const修饰。
拷贝构造函数的格式
拷贝构造函数的声明:
class类名
{
public:
类名(形参参数)//构造函数的声明/原型
类名(类名&对象名)//拷贝构造函数的声明/原型
...
};
拷贝构造函数的实现:
类名::类名(类名&对象名)//拷贝构造函数的实现/定义
{函数体}
class Dtae
{
public:
CDate()
{}
CDate(cosnt int year,const int mouth,const int day)
{
_year = year;
_mouth = mouth;
-day = day;
}
CDate(const Date&date )
{
_year = date._year;
_mouth = date._mouth;
_day = date ._day;
}
private:
int _year;
int _mouth;
int _day;
}
拷贝构造函数的特征
1.他是构造函数的重载。
2.他的参数必需使用同类对象的引用传递,为了避免无限递归。
3.如果没有显式定义,系统会自动的生成一个默认的拷贝构造函数,默认的拷贝构造函数会依次拷贝类的数据成员完成初始化
调用拷贝构造函数的情形
在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1)一个对象作为函数参数,以值传递的方式传入函数体;
2)一个对象作为函数返回值,以值传递的方式从函数返回;
3)一个对象用于给另外一个对象进行初始化(常称为赋值初始化);