佛山網(wǎng)站搭建公司哪家好性能優(yōu)化大師
拷貝構(gòu)造函數(shù)是參數(shù)類型為本類的引用的構(gòu)造函數(shù),它也叫復(fù)制構(gòu)造函數(shù),它只有一個(gè)參數(shù)。當(dāng)沒有寫拷貝構(gòu)造函數(shù)時(shí),會(huì)有一個(gè)默認(rèn)的拷貝構(gòu)造函數(shù)。
class AA
{
public:AA(AA& ra){}}
那么什么時(shí)候會(huì)調(diào)用此函數(shù)呢?有以下三種情況
1,當(dāng)一個(gè)對(duì)象去初始化另一個(gè)對(duì)象時(shí),會(huì)執(zhí)行拷貝構(gòu)造。
如:
#include<iostream>
using namespace std;class AA
{
public:int a;
public:AA(){a = 100;}};
int main()
{AA a;AA b(a); //會(huì)執(zhí)行拷貝構(gòu)造AA c=a; //會(huì)執(zhí)行拷貝構(gòu)造AA d;d=a; //會(huì)賦值,不會(huì)執(zhí)行拷貝構(gòu)造return 0;
}
2,函數(shù)的參數(shù)是類的對(duì)象,那么當(dāng)函數(shù)被調(diào)用時(shí),作為參數(shù)類對(duì)象的拷貝構(gòu)造函數(shù)將被調(diào)用。
如:
#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,如果函數(shù)返回值是類的對(duì)象,則函數(shù)返回時(shí),返回類對(duì)象的拷貝構(gòu)造函數(shù)會(huì)被調(diào)用。
如:
#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;
}