有以下程序 #include using namespace std; class MyClass { public:
有以下程序 #include<iostream> using namespace std; class MyClass { public: MyClass(intn) {number=n;} //拷貝構(gòu)造函數(shù) MyClass (MyClass& other) {number=other.number;} ~MyClass(){} private: int number; }; MyClass fun (MyClass p) { MyClass temp(p); return temp; } intmain() { MyClass obj1(10),obj2(0); MyClass obj3(obj1); obj2=fun(obj3); return0; } 程序執(zhí)行時(shí),MyClass類(lèi)的拷貝構(gòu)造函數(shù)被調(diào)用的次數(shù)是
A.5
B.4
C.3
D.2
正確答案:B解析:本題考核C++的拷貝構(gòu)造函數(shù)。調(diào)用拷貝構(gòu)造函數(shù)的情況為:一個(gè)新對(duì)象被另一個(gè)已存在的同類(lèi)型對(duì)象初始化:當(dāng)一個(gè)對(duì)象作為實(shí)參傳遞給函數(shù)時(shí)為初始化形參,要調(diào)用拷貝構(gòu)造函數(shù)。在函數(shù)值返回時(shí)形參的生命期結(jié)束時(shí)它的結(jié)構(gòu)函數(shù)被調(diào)用;在函數(shù)返回一個(gè)對(duì)象時(shí)調(diào)用拷貝構(gòu)造函數(shù)。符合以上條件的有:用對(duì)象。obj1來(lái)初始化。obj3;obj3作為實(shí)參被傳入;函數(shù)fun返回一個(gè)對(duì)象時(shí);系統(tǒng)用返回值初始化一個(gè)匿名對(duì)象時(shí)調(diào)用了拷貝構(gòu)造函數(shù)??偣舱{(diào)用4次。
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢(xún)相關(guān)領(lǐng)域?qū)I(yè)人士。