c語(yǔ)言四種基本數(shù)據(jù)類型 c 拷貝構(gòu)造函數(shù)在什么情況下會(huì)被調(diào)用?
c 拷貝構(gòu)造函數(shù)在什么情況下會(huì)被調(diào)用?存在以下情況:class MyClass{MyClass(){}MyClass(const MyClass&){}]//1。您的自定義類是通過值傳遞給函數(shù)
c 拷貝構(gòu)造函數(shù)在什么情況下會(huì)被調(diào)用?
存在以下情況:
class MyClass
{
MyClass(){}
MyClass(const MyClass&){}
]//1。您的自定義類是通過值傳遞給函數(shù)的
void myfunc(MyClass MyClass)//調(diào)用此函數(shù)將調(diào)用復(fù)制構(gòu)造函數(shù)
//2。要通過現(xiàn)有類的對(duì)象創(chuàng)建另一個(gè)對(duì)象
MyClass myclass1
MyClass Myclass2(myclass1)//此處調(diào)用復(fù)制構(gòu)造函數(shù)
//3。當(dāng)您使用容器時(shí)(如vector
vector
MyClass MyClass
v.pushBack(MyClass)//此處調(diào)用復(fù)制構(gòu)造函數(shù)
下列情況中,哪一種情況不會(huì)調(diào)用拷貝構(gòu)造函數(shù)?
復(fù)制構(gòu)造函數(shù)只能在以下三種情況下調(diào)用:
1)作為函數(shù)參數(shù)的對(duì)象通過值傳遞傳遞到函數(shù)體中;
2)作為函數(shù)返回值的對(duì)象通過值傳遞從函數(shù)返回;
3)對(duì)象用于初始化另一個(gè)對(duì)象(通常稱為賦值初始化)。
構(gòu)造函數(shù)什么時(shí)候被調(diào)用,復(fù)制構(gòu)造函數(shù)是么時(shí)候被調(diào)用?
方法仍有問題。構(gòu)造函數(shù)包括復(fù)制構(gòu)造函數(shù)。在創(chuàng)建對(duì)象時(shí)調(diào)用構(gòu)造函數(shù)。關(guān)鍵詞:創(chuàng)建時(shí),a是形式。指針類型僅在新建時(shí)調(diào)用復(fù)制構(gòu)造函數(shù)。它也是構(gòu)造器。當(dāng)用一個(gè)對(duì)象作為參數(shù)創(chuàng)建另一個(gè)對(duì)象時(shí),或者賦值(同樣關(guān)注于創(chuàng)建),例如a(b)a b a=b,以下不是對(duì)復(fù)制構(gòu)造函數(shù)a,b的調(diào)用。默認(rèn)的(無參數(shù))構(gòu)造稱為a=b賦值
有兩種情況,假設(shè)類名是ctest,構(gòu)造函數(shù)是默認(rèn)的構(gòu)造函數(shù)
一個(gè)是在創(chuàng)建本地對(duì)象時(shí),
ctestc//將自動(dòng)調(diào)用構(gòu)造函數(shù)
另一個(gè)是在使用new運(yùn)算符在堆上分配對(duì)象時(shí),
ctest*P=newctest//也將調(diào)用構(gòu)造函數(shù)