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