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

正文內(nèi)容

堆與復(fù)制構(gòu)造函數(shù)ppt課件(編輯修改稿)

2025-05-25 23:04 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 } 該程序運(yùn)行后的輸出結(jié)果如下: Constructiong Copy Constructiong 10 Destructiong 10 Destructiong 自定義復(fù)制構(gòu)造函數(shù) ? 在很多情況下,使用按位復(fù)制的方法來創(chuàng)建一個(gè)相同的對(duì)象副本是可行的,這時(shí)我們可以直接使用 C++語言提供的默認(rèn)復(fù)制構(gòu)造函數(shù)。 ? 但是,在某些情況下使用默認(rèn)的復(fù)制構(gòu)造函數(shù)會(huì)出現(xiàn)問題(例如 【 例 】 ),這時(shí)我們需要自己創(chuàng)建復(fù)制構(gòu)造函數(shù)。 【 例 】 class my_string { char *s。 public: my_string(char *str) { s = new char[strlen(str)+1]。 coutAllocating room for s\n。 strcpy(s, str)。 } ~my_string( ) { if(s) delete [ ] s。 cout Freeing s\n。 } void show( ) { cout s ?\n?。 } }。 【 例 】 (續(xù)) void display(my_string ob) { ( )。 } int main() { my_string obj(Hello!)。 display(obj)。 ()。 //這條語句輸出的是垃圾數(shù)據(jù) return 0。 } 使用默認(rèn)的復(fù)制構(gòu)造函數(shù)出現(xiàn)了問題 該程序運(yùn)行后的輸出結(jié)果如下: Allocating room for s Hello! Freeing s (撤銷對(duì)象 obj的副本 ob時(shí)調(diào)用析構(gòu)函數(shù)) 葺葺葺葺葺(這是輸出的垃圾數(shù)據(jù),不同的系統(tǒng)中輸出的內(nèi)容會(huì)不相同) Freeing s(撤銷對(duì)象 obj時(shí)調(diào)用析構(gòu)函數(shù)) 【 例 】 C++程序中的對(duì)象內(nèi)存分布示意圖 Hello 實(shí)參對(duì)象 obj 形參對(duì)象 ob (a) 從函數(shù) display( )返回前 S S 【 例 】 C++程序中的對(duì)象內(nèi)存分布示意圖 實(shí)參對(duì)象 obj (b) 從函數(shù) display( )返回后 S 解決這個(gè)問題的方法之一 void display(my_string amp。ob) { ( )。 } 經(jīng)過修改后,程序運(yùn)行后的輸出結(jié)果如下: Allocating room for s Hello! Hello! Freeing s 避免復(fù)制對(duì)象 初始化 (initialization) (1) 當(dāng)一個(gè)對(duì)象副本被作為參數(shù)傳遞給函數(shù)時(shí)。 my_string y。 display(y)。 //y被作為參數(shù)傳遞給函數(shù) (2) 當(dāng)一個(gè)對(duì)象被另一個(gè)對(duì)象顯式地初始化時(shí),例如在對(duì)象的聲明中。 my_string x=y。 //對(duì)象 y被顯式地用來初始化對(duì)象 x (3) 當(dāng)創(chuàng)建一個(gè)臨時(shí)對(duì)象時(shí) (最常見的情況是作為函數(shù)的返回值 )。 y=func2( )。 //y得到一個(gè)返回對(duì)象 復(fù)制構(gòu)造函數(shù)與函數(shù)參數(shù) ? 當(dāng)對(duì)象被作為參數(shù)傳遞給函數(shù)時(shí),會(huì)產(chǎn)生該對(duì)象的一個(gè)副本。 ? 如果我們創(chuàng)建了自定義的復(fù)制構(gòu)造函數(shù),那么這個(gè)自定義的復(fù)制構(gòu)造函數(shù)將被調(diào)用來制作這個(gè)對(duì)象副本。 【 例 】 自定義的復(fù)制構(gòu)造函數(shù) include iostream include cstring using namespace std。 class my_string { char *s。 public: my_string(char *str)。 //普通構(gòu)造函數(shù) my_string(const my_string amp。obj)。 //自定義的復(fù)制構(gòu)造函數(shù) ~my_string() { if(s) delete [] s。 cout Freeing s\n。 } void show() { cout s \n。 } }。 【 例 】 (續(xù) 1) my_string::my_string(char *str) //普通構(gòu)造函數(shù) { s = new char[strlen(str)+1]
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1