标签:
拷贝构造函数
1. 定义和作用
拷贝构造函数是一种特殊的构造函数,因为它也是用来构造对象的。它具有构造函数的所有特性,拷贝构造函数的作用是用一个已经 存在的对象去初始化另一个对象,这两个对象的类类型应该是一样的。
定义拷贝构造函数的形式是:
class 类名
{
public :
类名(形参); //构造函数
类名(类名 &对象名); //拷贝构造函数
...
};
类名::类(类名 &对象名) //拷贝构造函数的实现
{
函数体
}
拷贝构造函数的形参是本类的对象的引用。
2. 使用场景:
a). 当用类的一个对象去初始化该类的另一个对象时系统自动调用拷贝构造函数实现拷贝赋值
int main()
{
Point A(1,2);
Point B(A); //拷贝构造函数被调用
cout<<B.GetX()<<endl;
return 0;
}
b). 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数
void fun1(Point p)
{
cout<<p.GetX()<<endl;
}
int main()
{
Point A(1,2);
fun1(A); //调用拷贝构造函数
return 0;
}
c). 当函数的返回值是类对象时,系统自动调用拷贝构造函数
Point fun2()
{
Point A(1,2);
return A; //调用拷贝构造函数
}
int main()
{
Point B;
B=fun2();
return 0;
}
备注:这里的拷贝构造函数的使用情况有点特殊,在调用fun2()的时候,系统会创建一个临时无名对象用来接收fun2()中调用拷贝构 造函数初始化的对象,然后再把这个无名对象赋给B
标签:
原文地址:http://www.cnblogs.com/201112701206lee/p/4586733.html