#include <iostream>
/*
复制构造函数是C++中的一种特殊的函数,同构造函数一样对对象进行处理。
在数值的传递中时,他对对象进行复制操作,将原来对象中的数值进行拷贝
它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。
其唯一的参数(对象的引用)是不可变的(const类型)。
此函数经常用在函数调用时用户定义类型的值传递及返回。
拷贝构造函数要调用基类的拷贝构造函数和成员函数。
如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。
*/
using namespace std;
class A
{
public:
A(int i,int j)
{
cout << "执行构造函数!" <<endl;
m = i;
n = j;
}
A(A&one) //此处的复制构造函数就是系统默认的复制构造函数实现的机理,()中的A&表示这是一个引用,通过引用可以找到待拷贝的对象的数据
{
cout << "执行复制构造函数!" <<endl;
n = one.n;
m = one.m;
}
~A()
{
cout << "执行析构函数!" <<endl;
}
void print()
{
cout << m << " " << n;
}
private:
int m;
int n;
};
int main (void)
{
A a(2,4);
a.print();
cout << endl;
A b(a); //需要使用复制构造函数进行a对象的拷贝,复制构造函数也有构造函数的功能
b.print();
return 0;
}
执行的结果如下:
可以发现,在执行完复制构造函数之后没有执行构造函数,这说明复制构造函数也有构造函数的功能,这也就是他为什么叫复制构造函数!