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

正文內(nèi)容

c語言程序設(shè)計教程(下)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è)計教程 第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è)計教程 第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è)計教程 第7章 類與對象 拷貝構(gòu)造函數(shù) 拷貝構(gòu)造函數(shù) 是與類名相同,形參是本類的對象的引用的函數(shù),在用 已存在對象 初始化 新建立對象 時調(diào)用。 類的拷貝構(gòu)造函數(shù)一般由用戶定義,如果用戶沒有定義拷貝構(gòu)造函數(shù),系統(tǒng)就會 自動生成 一個默認(rèn)函數(shù),這個默認(rèn)拷貝構(gòu)造函數(shù)的功能是把初始值對象的每個數(shù)據(jù)成員的值 依次復(fù)制 到新建立的對象中。因此,也可以說是完成了同類對象的 克隆 (Clone)。這樣得到的對象和原對象具有完全相同的數(shù)據(jù)成員,即完全相同的屬性。 C++語言程序設(shè)計教程 第7章 類與對象 拷貝構(gòu)造函數(shù) 用戶可以也可以 根據(jù)實(shí)際問題的需要 定義特定的拷貝構(gòu)造函數(shù)來改變?nèi)笔】截悩?gòu)造函數(shù)的行為,以實(shí)現(xiàn)同類對象之間數(shù)據(jù)成員的傳遞。如果用戶自定義了拷貝構(gòu)造函數(shù),則在用一個類的對象初始化該類的另外一個對象時, 自動調(diào)用 自定義的拷貝構(gòu)造函數(shù)。 定義一個拷貝構(gòu)造函數(shù)的一般形式為: 拷貝構(gòu)造函數(shù)在用類的一個對象去初始化該類的另一個對象時調(diào)用,以下 三種情況 相當(dāng)于用一個已存在的對象去初始化新建立的對象 , 此時 , 調(diào)用拷貝構(gòu)造函數(shù): ① 當(dāng)用類的一個對象去初始化該類的另一個對象時。 ② 如果函數(shù)的形參是類的對象,調(diào)用函數(shù)時,將對象作為函數(shù)實(shí)參傳遞給函數(shù)的形參時。 ③ 如果函數(shù)的返回值是類的對象,函數(shù)執(zhí)行完成,將返回值返回時。 類名(類名 amp。 對象名) { … } 。 C++語言程序設(shè)計教程 第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è)計教程 第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ù)只是在用一個已存在的對象去初始化新建立的對象時調(diào)用,在對 象進(jìn)行賦值時,拷貝構(gòu)造函數(shù)不被調(diào)用。 ? 用一個常量初始化新建立的對象時,調(diào)用構(gòu)造函數(shù),不調(diào)用拷貝構(gòu)造函數(shù)。 ? 建立對象時,構(gòu)造函數(shù)與拷貝構(gòu)造函數(shù)有且僅有一個被調(diào)用。 C++語言程序設(shè)計教程 第7章 類與對象 淺拷貝與深拷貝 在默認(rèn)的拷貝構(gòu)造函數(shù)中,拷貝的策略是 直接將原對象的數(shù)據(jù)成員值依次拷貝給新對象中對應(yīng)的數(shù)據(jù)成員 ,如前面示例 義的拷貝函數(shù)所示,那么我們 為何不直接使用系統(tǒng)默認(rèn)的拷貝構(gòu)造函數(shù) ,何必又自己定義一個拷貝構(gòu)造函數(shù)呢?但是,有些情況下使用默認(rèn)的拷貝構(gòu)造函數(shù)卻會出現(xiàn) 意想不到的問題 。 例如,使用程序 String類,執(zhí)行下列程序系統(tǒng)就會出錯 : void main() { String s1(123456)。 String s2=s1。 } C++語言程序設(shè)計教程 第7章 類與對象 淺拷貝與深拷貝 為什么會出錯呢?程序中首先創(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ù)成員是指針, 兩個指針對象實(shí)際上指向的是同一塊內(nèi)存空間 。 當(dāng)執(zhí)行 String s2=s1時,默認(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)時,程序出現(xiàn) 異常 ,無法正常執(zhí)行和結(jié)束。 由此可見,在某些情況下,淺拷貝會帶來數(shù)據(jù)安全方面的隱患。 C++語言程序設(shè)計教程 第7章 類與對象 淺拷貝與深拷貝 當(dāng)類的數(shù)據(jù)成員中有指針類型時,我們就必須定義一個特定的拷貝構(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號-1