在沒(méi)有定義拷貝構(gòu)造函數(shù)是,下圖代碼中main函數(shù)中實(shí)例化了 三個(gè)對(duì)象:
Student stu1;Student stu2=stu1;Student stu3(stu1);
并把stu1初始化stu2和stu3,結(jié)構(gòu)運(yùn)行時(shí):只出現(xiàn)一個(gè)student,
#include<iostream>using namespace std;class Student{public: Student() { cout << "student" << endl;; }};int main(){ Student stu1; Student stu2=stu1; Student stu3(stu1);}當(dāng)我們將拷貝構(gòu)造函數(shù)定義時(shí)(如下代碼):運(yùn)行結(jié)構(gòu)出現(xiàn)了三個(gè) student:#include<iostream>using namespace std;class Student{public: Student() { cout << "student" << endl;; } Student(const Student&stu)//拷貝構(gòu)造函數(shù) { cout << "student" << endl;; }};int main(){ Student stu1; Student stu2=stu1; Student stu3(stu1);}但是我們會(huì)發(fā)現(xiàn),在我們實(shí)例化stu2,sut3時(shí)并沒(méi)有進(jìn)行拷貝構(gòu)造函數(shù)的定義 ,但是依然可以初始化。原因:在我們定義一個(gè)類時(shí),如果沒(méi)有寫構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),系統(tǒng)會(huì)自動(dòng)為我們生成一個(gè)默認(rèn)的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)。當(dāng)采用直接初始化或復(fù)制初始化時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用拷貝構(gòu)造函數(shù)。在我們自定義后,系統(tǒng)將不會(huì)自動(dòng)生成構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)。
注意:拷貝構(gòu)造函數(shù)的定義形式:
Student(const Student&stu)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注