資源描述:
《拷貝構(gòu)造函數(shù)對象數(shù)組動態(tài)創(chuàng)建刪除ppt課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、對象之間的賦值也是通過賦值運(yùn)算符“=”進(jìn)行的。其功能是將一個對象的成員值一一復(fù)制給另一對象的對應(yīng)成員。3.8對象的賦值和復(fù)制3.8.1對象的賦值格式為:對象名1=對象名2;注意:對象名1和對象名2必須屬于同一個類。例如Studentstud1,stud2;//定義兩個同類的對象┆stud2=stud1;//將stud1賦給stud2說明:(1)對象的賦值只對其中的數(shù)據(jù)成員賦值,而不對成員函數(shù)賦值。(2)類的數(shù)據(jù)成員中不能包括動態(tài)分配的數(shù)據(jù),否則在賦值時可能出現(xiàn)嚴(yán)重后果。用一個已有的對象復(fù)制出一個完全相同的新對象。如:Boxbox2(box1);作用:用已有的對象box1克隆
2、出一個新對象box2。一般形式為:類名對象2(對象1);用對象1復(fù)制出對象2。3.8.2對象的復(fù)制(復(fù)制構(gòu)造函數(shù)或拷貝構(gòu)造函數(shù))注意:對象的復(fù)制和對象的賦值的區(qū)別。對象的賦值是對一個已經(jīng)存在的對象賦值,因此必須先定義被賦值的對象,才能進(jìn)行賦值。對象的復(fù)制則是從無到有地建立一個新對象,并使它與一個已有的對象完全相同(包括對象的結(jié)構(gòu)和成員的值)。對象復(fù)制時,將調(diào)用一個特殊的構(gòu)造函數(shù)——復(fù)制構(gòu)造函數(shù)。class類名{public:類名(形參);//構(gòu)造函數(shù)類名(類名&對象名);//復(fù)制構(gòu)造函數(shù)……};類名::類名(類名&對象名)//復(fù)制構(gòu)造函數(shù)的實現(xiàn){函數(shù)體}//復(fù)制構(gòu)造函數(shù)定義B
3、ox::Box(Box&b){height=b.height;width=b.width;length=b.length;}普通構(gòu)造函數(shù)和復(fù)制構(gòu)造函數(shù)的區(qū)別:1、形式上的區(qū)別:類名(形式參數(shù));//普通構(gòu)造函數(shù)聲明,如Box(int,int,int);類名(類名&對象名);//復(fù)制構(gòu)造函數(shù),如Box(Box&b);2、建立對象時,系統(tǒng)會根據(jù)實參的類型決定調(diào)用普通構(gòu)造函數(shù)或復(fù)制構(gòu)造函數(shù):Boxbox1(12,15,16);//調(diào)用普通構(gòu)造函數(shù)Boxbox2(box1);//調(diào)用復(fù)制構(gòu)造函數(shù)以下3種情況,會調(diào)用復(fù)制構(gòu)造函數(shù):(1)、當(dāng)用類的一個對象去初始化該類的另一個對象時,系統(tǒng)
4、自動調(diào)用復(fù)制構(gòu)造函數(shù)。intmain(){Boxbox1(10,10,10);Boxbox2(box1);//復(fù)制構(gòu)造函數(shù)被調(diào)用Boxbox3=box1;//復(fù)制構(gòu)造函數(shù)被調(diào)用return0;}(2)、當(dāng)函數(shù)參數(shù)為類對象時。在調(diào)用函數(shù)時將實參對象完整地傳遞給形參,即按實參復(fù)制一個形參,系統(tǒng)自動調(diào)用復(fù)制構(gòu)造函數(shù)。voidfunc(Boxbox2){cout<5、用處時。此時需要將函數(shù)中的對象復(fù)制一個臨時對象并傳給該函數(shù)的調(diào)用處。Boxf()//函數(shù)f的類型為Box類類型{Boxbox1(12,15,18);returnbox1;//返回值是Box類的對象}intmain(){Boxbox2;//定義Box類的對象box2box2=&box1;}注意:如果程序員沒有為類聲明復(fù)制構(gòu)造函數(shù),則編譯器自動生成一個復(fù)制構(gòu)造函數(shù)。該復(fù)制構(gòu)造函數(shù)功能:將作為初始值的對象每個數(shù)據(jù)成員的值,初始化將要建立的對象的對應(yīng)數(shù)據(jù)成員。例:一個班有50個學(xué)生,每個學(xué)生的屬性包括學(xué)號、年齡、成績等??啥x一個“學(xué)生類”對象數(shù)組,每一個數(shù)組元素是一個“學(xué)生類”對象
6、。例如:Studentstud[50];//假設(shè)已聲明了Student類,定義stud數(shù)組,有50個元素3.4對象數(shù)組如果建立50個元素的數(shù)組,則需要調(diào)用50次構(gòu)造函數(shù)。對象數(shù)組的初始化:1、如果構(gòu)造函數(shù)只有一個參數(shù),在定義數(shù)組時可以直接在等號后面的花括號內(nèi)提供實參。如Studentstud[3]={101,102,103};//合法,3個實參分別傳遞給3個數(shù)組元素的構(gòu)造函數(shù)2、如果構(gòu)造函數(shù)有多個參數(shù),在定義對象數(shù)組時,必須在花括號中分別寫出構(gòu)造函數(shù)并指定實參。例如:構(gòu)造函數(shù)有3個參數(shù),分別代表學(xué)號、年齡、成績。按以下方式定義并初始化對象數(shù)組:StudentStud[3]={
7、//定義對象數(shù)組Student(1001,18,87),//調(diào)用第1個元素的構(gòu)造函數(shù)Student(1002,19,76),//調(diào)用第2個元素的構(gòu)造函數(shù)Student(1003,18,72)//調(diào)用第3個元素的構(gòu)造函數(shù)};在建立對象時,編譯系統(tǒng)會為每一個對象分配一定的存儲空間,以存放其成員。對象空間的起始地址就是對象的指針。可以定義一個指針變量,用來存放對象的指針。3.5對象指針3.5.1指向?qū)ο蟮闹羔樁x指向類對象的指針變量的一般形式為:類名*對象指針名;this指針是隱式使用的。return(he