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

正文內(nèi)容

c語言程序設(shè)計(jì)教程(下)ppt(編輯修改稿)

2025-01-03 21:40 本頁面
 

【文章內(nèi)容簡介】 19 20 21 22 23 24 25 26 27 ~Clock() { coutdestructor:H:M:Sendl。 } }。 Clock C1(8,0,0)。 Clock C2(9,0,0)。 void main(void) { Clock C3(10,0,0)。 Clock C4(11,0,0)。 } 運(yùn)行結(jié)果 : constructor:8:0:0 constructor:9:0:0 constructor:10:0:0 constructor:11:0:0 destructor:11:0:0 destructor:10:0:0 C++語言程序設(shè)計(jì)教程 第7章 類與對象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /********************************** * * * 基本的字符串類 * **********************************/ include iostream using namespace std。 class String { private: char *Str。 int len。 public: void ShowStr() { coutstring:Str,length:lenendl。 } String() { len=0。 Str=NULL。 } C++語言程序設(shè)計(jì)教程 第7章 類與對象 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 String(const char *p) { len=strlen(p)。 Str=new char[len+1]。 strcpy(Str,p)。 } ~String() { if (Str!=NULL) { delete [] Str。 Str=NULL。 } } }。 void main(void) { char s[]=ABCDE。 String s1(s)。 String s2(123456)。 ()。 ()。 } 運(yùn)行結(jié)果 : string:ABCDE, length:5 string:123456, length:6 C++語言程序設(shè)計(jì)教程 第7章 類與對象 拷貝構(gòu)造函數(shù) 拷貝構(gòu)造函數(shù) 是與類名相同,形參是本類的對象的引用的函數(shù),在用 已存在對象 初始化 新建立對象 時(shí)調(diào)用。 類的拷貝構(gòu)造函數(shù)一般由用戶定義,如果用戶沒有定義拷貝構(gòu)造函數(shù),系統(tǒng)就會(huì) 自動(dòng)生成 一個(gè)默認(rèn)函數(shù),這個(gè)默認(rèn)拷貝構(gòu)造函數(shù)的功能是把初始值對象的每個(gè)數(shù)據(jù)成員的值 依次復(fù)制 到新建立的對象中。因此,也可以說是完成了同類對象的 克隆 (Clone)。這樣得到的對象和原對象具有完全相同的數(shù)據(jù)成員,即完全相同的屬性。 C++語言程序設(shè)計(jì)教程 第7章 類與對象 拷貝構(gòu)造函數(shù) 用戶可以也可以 根據(jù)實(shí)際問題的需要 定義特定的拷貝構(gòu)造函數(shù)來改變?nèi)笔】截悩?gòu)造函數(shù)的行為,以實(shí)現(xiàn)同類對象之間數(shù)據(jù)成員的傳遞。如果用戶自定義了拷貝構(gòu)造函數(shù),則在用一個(gè)類的對象初始化該類的另外一個(gè)對象時(shí), 自動(dòng)調(diào)用 自定義的拷貝構(gòu)造函數(shù)。 定義一個(gè)拷貝構(gòu)造函數(shù)的一般形式為: 拷貝構(gòu)造函數(shù)在用類的一個(gè)對象去初始化該類的另一個(gè)對象時(shí)調(diào)用,以下 三種情況 相當(dāng)于用一個(gè)已存在的對象去初始化新建立的對象 , 此時(shí) , 調(diào)用拷貝構(gòu)造函數(shù): ① 當(dāng)用類的一個(gè)對象去初始化該類的另一個(gè)對象時(shí)。 ② 如果函數(shù)的形參是類的對象,調(diào)用函數(shù)時(shí),將對象作為函數(shù)實(shí)參傳遞給函數(shù)的形參時(shí)。 ③ 如果函數(shù)的返回值是類的對象,函數(shù)執(zhí)行完成,將返回值返回時(shí)。 類名(類名 amp。 對象名) { … } 。 C++語言程序設(shè)計(jì)教程 第7章 類與對象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /***************************** * * * 構(gòu)造拷貝構(gòu)造函數(shù) * *****************************/ include iostream using namespace std。 class Clock { private: int H,M,S。 public: Clock(int h=0,int m=0,int s=0) { H=h,M=m,S=s。 coutconstructor:H:M:Sendl。 } ~Clock() { coutdestructor:H:M:Sendl。 } C++語言程序設(shè)計(jì)教程 第7章 類與對象 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 Clock(Clock amp。 p) { coutcopy constructor,before call: H:M:Sendl。 H=。 M=。 S=。 } void ShowTime() { coutH:M:Sendl。 } }。 Clock fun(Clock C) { return C。 } void main(void) { Clock C1(8,0,0)。 Clock C2(9,0,0)。 Clock C3(C1)。 fun(C2)。 Clock C4。 C4=C2。 } 運(yùn)行結(jié)果 : constructor:8:0:0 constructor:9:0:0 copy constructor,before call: 858993460:858993460:858993460 copy constructor,before call: 1310592:4202234:1310568 copy constructor,before call: 858993460:858993460:858993460 destructor:9:0:0 destructor:9:0:0 constructor:0:0:0 destructor:9:0:0 destructor:8:0:0 destructor:9:0:0destructor:8:0:0 ?注意 : ? 拷貝構(gòu)造函數(shù)只是在用一個(gè)已存在的對象去初始化新建立的對象時(shí)調(diào)用,在對 象進(jìn)行賦值時(shí),拷貝構(gòu)造函數(shù)不被調(diào)用。 ? 用一個(gè)常量初始化新建立的對象時(shí),調(diào)用構(gòu)造函數(shù),不調(diào)用拷貝構(gòu)造函數(shù)。 ? 建立對象時(shí),構(gòu)造函數(shù)與拷貝構(gòu)造函數(shù)有且僅有一個(gè)被調(diào)用。 C++語言程序設(shè)計(jì)教程 第7章 類與對象 淺拷貝與深拷貝 在默認(rèn)的拷貝構(gòu)造函數(shù)中,拷貝的策略是 直接將原對象的數(shù)據(jù)成員值依次拷貝給新對象中對應(yīng)的數(shù)據(jù)成員 ,如前面示例 義的拷貝函數(shù)所示,那么我們 為何不直接使用系統(tǒng)默認(rèn)的拷貝構(gòu)造函數(shù) ,何必又自己定義一個(gè)拷貝構(gòu)造函數(shù)呢?但是,有些情況下使用默認(rèn)的拷貝構(gòu)造函數(shù)卻會(huì)出現(xiàn) 意想不到的問題 。 例如,使用程序 String類,執(zhí)行下列程序系統(tǒng)就會(huì)出錯(cuò) : void main() { String s1(123456)。 String s2=s1。 } C++語言程序設(shè)計(jì)教程 第7章 類與對象 淺拷貝與深拷貝 為什么會(huì)出錯(cuò)呢?程序中首先創(chuàng)建對象 s1, 為對象 s1分配相應(yīng)的內(nèi)存資源,調(diào)用構(gòu)造函數(shù)初始化該對象,然后調(diào)用系統(tǒng)缺省的拷貝構(gòu)造函數(shù)將對象 s1拷貝給對象 s2,這一切看來似乎很正常,但程序的運(yùn)行卻出現(xiàn)異常! 原因在于默認(rèn)的拷貝構(gòu)造函數(shù)實(shí)現(xiàn)的只能是 淺拷貝 ,即直接將原對象的數(shù)據(jù)成員值依次拷貝給新對象中對應(yīng)的數(shù)據(jù)成員 ,并沒有為新對象另外分配內(nèi)存資源。這樣,如果對象的數(shù)據(jù)成員是指針, 兩個(gè)指針對象實(shí)際上指向的是同一塊內(nèi)存空間 。 當(dāng)執(zhí)行 String s2=s1時(shí),默認(rèn)的淺拷貝構(gòu)造函數(shù)進(jìn)行的是下列操作: =。 =。 實(shí)際上是將 ,并沒有為 ,執(zhí)行String s2=s1。后,對象 s2析構(gòu),釋放內(nèi)存,然后對象 s1析構(gòu),由于 和,而 同一塊內(nèi)存不可能釋放兩次 ,所以當(dāng)對象 s1析構(gòu)時(shí),程序出現(xiàn) 異常 ,無法正常執(zhí)行和結(jié)束。 由此可見,在某些情況下,淺拷貝會(huì)帶來數(shù)據(jù)安全方面的隱患。 C++語言程序設(shè)計(jì)教程 第7章 類與對象 淺拷貝與深拷貝 當(dāng)類的數(shù)據(jù)成員中有指針類型時(shí),我們就必須定義一個(gè)特定的拷貝構(gòu)造函數(shù),該拷貝構(gòu)造函數(shù)不僅可以實(shí)現(xiàn)原對象和新對象之間數(shù)據(jù)成員的拷貝,而且可以為新的對象 分配單獨(dú)的內(nèi)存資源 ,這就是 深拷貝構(gòu)造函數(shù) 。 s1 l en = 6 39。 1 39。 s1 l en = 6 39。 1 39。 S t r 39。 2 39。 S t r 39。 2 39。 … … 39。 6 39。 39。 6 39。 39。 \ 0 39。 39。 \ 039。 s2 l en= 6 s2 l en = 6 1 S t r S t r 2 … 6
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1