拷贝构造函数是参数类型为本类的引用的构造函数,它也叫复制构造函数,它只有一个参数。当没有写拷贝构造函数时,会有一个默认的拷贝构造函数。
class AA
{
public:AA(AA& ra){}}
那么什么时候会调用此函数呢?有以下三种情况
1,当一个对象去初始化另一个对象时,会执行拷贝构造。
如:
#include<iostream>
using namespace std;class AA
{
public:int a;
public:AA(){a = 100;}};
int main()
{AA a;AA b(a); //会执行拷贝构造AA c=a; //会执行拷贝构造AA d;d=a; //会赋值,不会执行拷贝构造return 0;
}
2,函数的参数是类的对象,那么当函数被调用时,作为参数类对象的拷贝构造函数将被调用。
如:
#include<iostream>
using namespace std;class AA
{
public:int N;
public:AA(int n){N = n;}};void f(AA a)
{}
int main()
{AA a;f(a);return 0;
}
3,如果函数返回值是类的对象,则函数返回时,返回类对象的拷贝构造函数会被调用。
如:
#include<iostream>
using namespace std;class AA
{
public:int N;
public:AA(int n){N = n;}};AA f()
{AA a(100);return a;
}int main()
{AA a;cout<<f().N<<endl;return 0;
}