freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[理學(xué)]第三章構(gòu)造函數(shù)和析構(gòu)函數(shù)(編輯修改稿)

2024-11-15 01:00 本頁面
 

【文章內(nèi)容簡介】 。 coutconstrustor demo(int,int) be called......。 } demo() { coutconstructor demo() be alled...\n。 } void show () { coutx=xy=yendl。 } }。 void main() { demo d1(3,5)。 ()。 demo d2。 ()。 } 最好放另一個文件,前面用頭文件,將定義和實現(xiàn)分開 說明: C++ 規(guī)定,每一個類必須有一個構(gòu)造函數(shù),沒有構(gòu)造函數(shù)就不能創(chuàng)建任何對象; 無參數(shù)的構(gòu)造函數(shù)為 默認構(gòu)造函數(shù) ,一個類只能有一個默認構(gòu)造函數(shù),否則系統(tǒng)無法辨別執(zhí)行哪個構(gòu)造函數(shù)。 盡管在類中可以書寫多個構(gòu)造函數(shù),但是對每一個對象來說,建立對象時只執(zhí)行其中的一個構(gòu)造函數(shù)。 ?缺省構(gòu)造函數(shù) (Default Constructors) 若未定義一個類的構(gòu)造函數(shù),則 C++ 提供了一個缺省的構(gòu)造函數(shù),該缺省構(gòu)造函數(shù)是一個無參數(shù)的構(gòu)造函數(shù),僅僅負責(zé)創(chuàng)建對象,而不做任何初始化工作 只要一個類定義了一個構(gòu)造函數(shù), C++ 就不再提供缺省的構(gòu)造函數(shù)。如還需要無參數(shù)構(gòu)造函數(shù),則必須自己定義; 與變量定義類似,在用缺省構(gòu)造函數(shù)創(chuàng)建對象時,如果創(chuàng)建的是全局對象或靜態(tài)對象,則對象成員數(shù)據(jù)全為 0;局部對象創(chuàng)建時,其成員數(shù)據(jù)是無意義的隨機數(shù)。 本章第一個例子中,創(chuàng)建的全局對象、靜態(tài)對象及局部對象都是由編譯器提供的缺省構(gòu)造函數(shù)自動創(chuàng)建的,僅對成員數(shù)據(jù)分配了內(nèi)存空間,未做初始化工作。 ?使用默認參數(shù)的構(gòu)造函數(shù) 構(gòu)造函數(shù)中參數(shù)的值既可以通過實參傳遞,也可以指定為某些默認值,即如果用戶不指定實參值,編譯系統(tǒng)就使形參取默認值。 實際編程中,經(jīng)常用到的值就可以寫為默認值。如初值一般為 0;戰(zhàn)士性別一般為“男”等。目標就是減少輸入量。 例:對上例中的構(gòu)造函數(shù)改用含有默認值的參數(shù),長、寬、高的默認值均為 上例中不能再有 box( )了,因為帶默認值的 box 函數(shù)可以在定義變量時不寫參數(shù),這樣編譯器如何知道調(diào)用哪個呢?出現(xiàn)問題了。 他相當(dāng)于原來的兩個構(gòu)造函數(shù)功能。優(yōu)點是在調(diào)用構(gòu)造函數(shù)時即便沒有賦值,也不會出現(xiàn)意想不到的值,而且還是用默認的參數(shù)值對對象進行的初始化。 說明: 1. 在聲明構(gòu)造函數(shù)時就要制定默認值,而不能只在定義構(gòu)造函數(shù)時指定默認值。 2. 如果全部實參都指定了默認值,則在定義對象時可以給一個或幾個實參,也可以不給出實參。他也屬于默認構(gòu)造函數(shù)。 3. 一個類只有一個默認構(gòu)造函數(shù),所以不能有 box() 4. 有了全部是默認參數(shù)的構(gòu)造函數(shù)后,不能再定義重載構(gòu)造函數(shù)。 Box(int=10,int=10,int=10)。 //省略形參名,全部為默認參數(shù) Box()。 Box(int ,int)。//有兩個參數(shù)的構(gòu)造函數(shù),為重載構(gòu)造函數(shù) 調(diào)用時,如: Box box1。 Box box2(15,30)。 編譯器知道調(diào)用哪個么?歧義 C++ 中,提供了用一個對象值創(chuàng)建并初始化另一個對象的方法,完成該功能的是拷貝構(gòu)造函數(shù)。例如 Tdate d1(2021,3,1)。 Tdate d2(d1)。 ?拷貝構(gòu)造函數(shù) (Copy Constructor) 用構(gòu)造函數(shù)創(chuàng)建 d1 的值初始化新創(chuàng)建的對象 d2。 拷貝構(gòu)造函數(shù)的特點: 拷貝構(gòu)造函數(shù)名字與類同名,沒有返回類型; 拷貝構(gòu)造函數(shù)只有一個形參數(shù),該參數(shù)是該類的對象的引用; 拷貝構(gòu)造函數(shù)的格式如下: 類名 ::拷貝構(gòu)造函數(shù)名 (類名 amp。引用名 ) {函數(shù)體 } 其中, 拷貝構(gòu)造函數(shù)名 與該類名相同; 如果一個類中沒有定義拷貝構(gòu)造函數(shù),則系統(tǒng)自動生成一個缺省拷貝構(gòu)造函數(shù),其功能是將已知對象的所有數(shù)據(jù)成員的值拷貝給對應(yīng)對象的數(shù)據(jù)成員。 例如:下面程序說明了調(diào)用拷貝構(gòu)造函數(shù)的過程 include class Tpoint { public: Tpoint(int xp,int yp) {x=xp。 y=yp。} Tpoint(Tpointamp。 p)。 //copy constructor declaration ~Tpoint() {cout“Destructor called.\n”。} int xcoord() {return x。} int ycoord() {return y。} private: int x,y。 }。 Tpoint::Tpoint(Tpointamp。 p) { x=。 y=。 cout“Copy_initialization constructor called.\n”。 } void main() { Tpoint p1(5,7)。 Tpoint p2(p1)。 cout“p2=”()“,”() endl。 } 結(jié)果: Copy_initialization constructor called. P2=5,7 Destructor called. Destructor called. 拷貝構(gòu)造函數(shù)除了用于使用已知對象的值創(chuàng)建一個同類的新對象外,還有兩個主要用處: 把對象作為實參數(shù)進行函數(shù)調(diào)用時,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)實現(xiàn)把對象值傳遞給形參對象; 當(dāng)函數(shù)的返回值為對象時,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)對返回對象值創(chuàng)建一個臨時對象,然后再將這個臨時對象值賦給接收函數(shù)返回值的對象。 ?拷貝構(gòu)造函數(shù)的其他用處 拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),有普通構(gòu)造函數(shù)的所有特性,其形參必須是本類對象的引用。其作用是使用一個已經(jīng)建立好的對象去初始化一個新的同類對象。 拷貝構(gòu)造函數(shù) 程序員可以根據(jù)實際需要定義特定的拷貝構(gòu)造函數(shù)來實現(xiàn)同類對象之間的數(shù)據(jù)傳遞。如果程序員沒有定義類的拷貝構(gòu)造函數(shù),系統(tǒng)會自動生成一個默認拷貝構(gòu)造函數(shù),其作用是把初始值對象的每個數(shù)據(jù)成員的值都復(fù)制到新建立的對象中。 拷貝構(gòu)造函數(shù)的定義例子 class Rect { public: Rect(Rect amp。r)。 //聲明拷貝構(gòu)造函數(shù) }。 Rect::Rect(Rect amp。r) //實現(xiàn)拷貝構(gòu)造函數(shù) { top=。 left=。 width=。 height=。 cout拷貝構(gòu)造函數(shù)被調(diào)用 endl。 } 例如:下面程序中共創(chuàng)建
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1