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

正文內(nèi)容

面向?qū)ο蟪绦蛟O(shè)計(jì)c語(yǔ)言二ppt(參考版)

2025-01-22 11:39本頁(yè)面
  

【正文】 1。 ? 聲明指向類對(duì)象的指針變量的一般形式為 類名 *對(duì)象指針名 。 //釋放 pd所指向的內(nèi)存空間 return 0。 //定義一個(gè)指向 Date類的對(duì)象的指針變量 pd pd=new Date(1,1,2022)。 y3000) year=y。 if (y0 amp。amp。 m13) month=m。 Date::Date(int m, int d, int y) //定義構(gòu)造函數(shù) { if (m0 amp。 public: Date(int m, int d, int y)。 /* */ include iostream using namespace std。 ? 利用 new建立對(duì)象會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù) , 利用delete刪除對(duì)象會(huì)自動(dòng)調(diào)用析構(gòu)函數(shù) 。 return 0。 i++) coutobj[i].Get_x()” ”。 for(i=0。 i4。 int i。 } }。 public: void Set_x(int n) { x=n。 /* */ include iostream using namespace std。 ? 在建立對(duì)象數(shù)組時(shí) , 分別調(diào)用構(gòu)造函數(shù) , 對(duì)每個(gè)元素初始化 。 129 ? 如果類 Student 有 2 個(gè) 數(shù) 據(jù) 成 員 姓 名 ( char name[10]) 、 年齡 (int age), 那么在定義對(duì)象數(shù)組時(shí)也可以實(shí)現(xiàn)初始化 。 定義了類 Student 的對(duì)象數(shù)組 stu。 定義對(duì)象數(shù)組時(shí) , 系統(tǒng)為每個(gè)數(shù)組元素對(duì)象調(diào)用一次構(gòu)造函數(shù)以構(gòu)造這些元素 。 127 對(duì)象數(shù)組與對(duì)象指針 ? 所謂 對(duì)象數(shù)組 是指每一數(shù)組元素都是對(duì)象的數(shù)組 , 也就是說(shuō) , 若一個(gè)類有若干個(gè)對(duì)象 , 我們把這一系列的對(duì)象用一個(gè)數(shù)組來(lái)存放 。 return *this。 { x=i。 Sampleamp。 Set(int i, char *p)。 char* ptr。 } 126 另一種使用 this指針的應(yīng)用是一個(gè)類的方法需要返回當(dāng)前對(duì)象的引用 。 } 125 ? 那么何時(shí)使用 this指針呢 ? ? 編寫(xiě)代碼時(shí)主要有兩種場(chǎng)合要求盡可能使用this指針 , 一種是為了區(qū)分成員和非成員 。 ()。 } }。 //在此例中 this=amp。obj thisy=b。 public: Sample(int a=0, int b=0) { thisx=a。 } 成員函數(shù)中隱含著一個(gè)指針 this, 它指向調(diào)用成員函數(shù)的對(duì)象,在成員函數(shù)中可以直接使用該指針, 124 上述程序可用 this指針顯示改寫(xiě)為完全等價(jià)的形式: include iostream using namespace std。 ()。 } }。 } void print() { coutxendl。 public: Sample(int a=0, int b=0) { x=a。 /* */ include iostream using namespace std。 ? 當(dāng)程序中調(diào)用類的成員函數(shù)時(shí) , this指針變量被自動(dòng)初始化為發(fā)出函數(shù)調(diào)用的對(duì)象的地址 。 在 C++中 , 為這種機(jī)制設(shè)立了專門的表示: this指針變量 。 ? 常對(duì)象:常數(shù)據(jù)成員與常成員函數(shù)。 ? 類的靜態(tài)成員:靜態(tài)數(shù)據(jù)成員與靜態(tài)成員函數(shù)。 ? 在系統(tǒng)分析和設(shè)計(jì)時(shí) , UML作用非常重要 , 其中的類圖具有充分強(qiáng)大的表達(dá)能力和豐富的語(yǔ)義 ,是建模時(shí)非常重要的一個(gè)圖 。 ? 為了解決淺拷貝出現(xiàn)的錯(cuò)誤 , 必須顯式地定義一個(gè)自己的拷貝構(gòu)造函數(shù) , 使之不但拷貝數(shù)據(jù)成員 , 而且為對(duì)象分配各自的內(nèi)存空間 , 這就是所謂的深拷貝 。 118 4 淺拷貝與深拷貝 ? 所謂淺拷貝 , 就是由缺省的拷貝構(gòu)造函數(shù)所實(shí)現(xiàn)的數(shù)據(jù)成員逐一賦值 。 ? 析構(gòu)函數(shù)同構(gòu)造函數(shù)一樣 , 也是類的一個(gè)特殊成員函數(shù) ,其函數(shù)名稱是在類名的前面加上 “ ~ “ 。 ? 析構(gòu)函數(shù)也是一種特殊的成員函數(shù) 。 ? 在 C++中有多種構(gòu)造函數(shù) , 如缺省參數(shù)的構(gòu)造函數(shù) 、 拷貝構(gòu)造函數(shù) 、 缺省的構(gòu)造函數(shù)等 , 它們有不同的特點(diǎn)和用途 。 構(gòu)造函數(shù)不能像其他成員函數(shù)那樣被顯式地調(diào)用 , 它是在定義對(duì)象的同時(shí)被調(diào)用的 。 116 3 構(gòu)造函數(shù)與析構(gòu)函數(shù) (1) 構(gòu)造函數(shù) 。 115 2 類成員的訪問(wèn)權(quán)限 ? 按訪問(wèn)權(quán)限劃分 , 數(shù)據(jù)成員和成員函數(shù)可分為 3種 , 分別是公有數(shù)據(jù)成員與成員函數(shù) 、 保護(hù)公有數(shù)據(jù)成員與成員函數(shù) , 以及私有數(shù)據(jù)成員與成員函數(shù) 。 ( 2) 聲明了類之后 , 在使用時(shí)再定義對(duì)象 。 在 C++中可以用兩種方法定義對(duì)象: ( 1) 在聲明類的同時(shí) , 直接定義對(duì)象 , 即在聲明類的右花括號(hào) , “ }” 后 , 直接寫(xiě)出屬于該類的對(duì)象名表 。 113 圖 帶有注釋的 Line類和 Point類的關(guān)系 114 本章小結(jié) 1 類與對(duì)象 ? 類是用戶聲明的一種抽象的數(shù)據(jù)類型 。 //Point類對(duì)象 p1,p2 double len。 double GetLen()。 Line(Line amp。 }。 int GETY()。p)。 /* */ class Point //Point類聲明 { public: Point(int xx=0,int yy=0)。 ? 在 UML 圖形上 , 注釋表示為帶有褶角的矩形 ,然后用虛線連接到 UML的其他元素上 , 它是一種用于在圖中附加文字注釋的機(jī)制 。 ? 注釋是附加在元素或元素集上用來(lái)表示說(shuō)明或注釋的圖形符號(hào) 。 子類 1 說(shuō)明了單繼承 , 子類 2 說(shuō)明了多繼承 。 109 圖 聚集和組合 110 ( 4 )繼承關(guān)系-一泛化 ? 類之間的繼承關(guān)系在 UML 中稱為泛化 , 使用帶有三角形標(biāo)識(shí)的直線段表示這種繼承關(guān)系 , 三角的一個(gè)尖指向父類 , 對(duì)邊上的線指向子類 。在 UML中,聚集表示空心菱形,組合表示為實(shí)心菱形。 ? 組合是一種簡(jiǎn)單的聚集形式,但是它具有更強(qiáng)的擁有關(guān)系;整體擁有各個(gè)部分,整體與部分共存,如果整體不存在了,那么部分也不存在了。 ? UML中的聚集表示類之間的關(guān)系是整體與部分的關(guān)系,“ 包含 ” 、 “ 組成 ” 、 “ 分為 …… 部分 ” 等都是聚集關(guān)系。 圖 在 UML中關(guān)聯(lián)的圖形表示 107 重?cái)?shù)標(biāo)記的形式和含義均列于表 。 圖 說(shuō)明了在 UML 中對(duì)關(guān)聯(lián)的表示 。 ? 在 UML 中 , 用實(shí)線來(lái)表示的兩個(gè)類 ( 或同一個(gè)類 ) 之間的關(guān)聯(lián) , 在線段兩端通常包含多重性( 或稱重?cái)?shù) ) 。 ? 圖中的 “ 類 A 是源 , “ 類 B” 是目標(biāo) , 表示 “ 類 A” 使用了類B , 或者 “ 類 A” 依賴 “ 類 B”。 ? 對(duì)于大多數(shù)依賴關(guān)系而言,簡(jiǎn)單的、不加修飾的依賴關(guān)系就足夠了。 ? 當(dāng)要表明一個(gè)類使用另一個(gè)類作為它的成員函數(shù)參數(shù)時(shí),就使用依賴關(guān)系。數(shù)據(jù)成員及其值在下面區(qū)域,數(shù)據(jù)成員是可選的。 ? 由類名和對(duì)象名組成,其間用冒號(hào)隔開(kāi),表示方式為“ 對(duì)象名:類名 ” 。 101 ? 在 UML 中,用一個(gè)矩形來(lái)表示一個(gè) 對(duì)象 : ? 對(duì)象的名字要加下劃線。 ? 返回類型:表示該成員函數(shù)返回值的類型,它可以是基本數(shù)據(jù)類型,可以是用戶自定義的類型,也可以是某一個(gè)類,還可以是上述類型的指針。 ? 參數(shù)表:含有由逗號(hào)分隔的參數(shù),其表示方法為按照 “ [方向]名稱:類型=默認(rèn)值 ” 格式給出函數(shù)的形參列表,注意其格式和 cpp 文件中不同。 100 ? UML 規(guī)定成員函數(shù)的表示語(yǔ)法為: [ 訪問(wèn)控制屬性 ] 名稱 [( 參數(shù)表 )] [ :返回類型 ][ { 約束特征 } ] ? 訪問(wèn)控制屬?。悍譃?public、 private 和 protected 三種,分別對(duì)應(yīng)于 UML 中的 “ +” 、 “ ” 、 “ ” 。 ? 約束特征:是用戶對(duì)該數(shù)據(jù)成員性質(zhì)的約束說(shuō)明 。 它可以是基本數(shù)據(jù)類型 , 例如整數(shù) 、實(shí)數(shù) 、 布爾型等 , 也可以是用戶自定義的類型 , 還可以是某一個(gè)類 。 ? 重?cái)?shù):可以在名稱后面的方括號(hào)內(nèi)添加屬隴的重?cái)?shù) 。 其中: ? 訪問(wèn)控制屬性:分為 puhhc 、 private和 protect三種 , 分別對(duì)應(yīng)于UML 中的 “ +” 、 “ ” 和 “ ” 。 ? 其余部分都是可選的 。 }。 void ShowTime()。 下面以 Clock 類為例 , 具體看類的表示 。 ? 類圖中最基本的是要圖形化描述類 , 要表示類的名稱 、 數(shù)據(jù)成員和成員函數(shù)以及各成員的訪問(wèn)控制屬性 。 94 類圖 ? 一個(gè)類圖是由類和與之相關(guān)的各種靜態(tài)關(guān)系共同組成的圖形 。 ? 在 UML 中 , 共有 9 種類型的圖 , 即用例圖 、 順序圖 、 協(xié)作圖 、 類圖 、 對(duì)象圖 、 狀態(tài)圖 、 活動(dòng)圖 、 構(gòu)件圖和部署圖 。 92 UML 有五個(gè)方面的特點(diǎn): ? 統(tǒng)一的標(biāo)準(zhǔn),即 UML 已被 OMG (Object Management Group) 接受為標(biāo)準(zhǔn)的建模語(yǔ)言 ; ? 面向?qū)ο螅?UML 是支持面向?qū)ο蟮能浖_(kāi)發(fā)建模語(yǔ)言; ? 可視化、表示能力強(qiáng)大; ? 獨(dú)立于過(guò)程,即 UML 不依賴于特定的軟件開(kāi)發(fā)過(guò)程; ? 概念明確,即建模表示法簡(jiǎn)潔,圖形結(jié)構(gòu)清晰,容易掌握和使用。 91 UML UML概述 ? UML 是 Unified Modeling Language( 統(tǒng)一建模語(yǔ)言 )的縮寫(xiě)。 } 90 圖 定義拷貝構(gòu)造函數(shù)實(shí)現(xiàn)深拷貝 ? , 但兩塊存儲(chǔ)區(qū)域中都保存著相同的字符串 “ teacher”, 這時(shí)實(shí)現(xiàn)的是深拷貝 。 strcpy(S, )。 類外增加拷貝構(gòu)造函數(shù)的實(shí)現(xiàn)代碼如下: String::String(const String amp。 String(const String amp。 ? 這樣 , 兩個(gè)對(duì)象的指針成員就擁有不同的地址值 , 指向不同的動(dòng)態(tài)存儲(chǔ)空間首地址 , 而兩個(gè)動(dòng)態(tài)空間中的內(nèi)容完全一樣 。 88 ? 在這種情況下 , 通過(guò)定義拷貝構(gòu)造函數(shù)實(shí)現(xiàn) 深拷貝 可以解決淺拷貝所帶來(lái)的指針懸掛問(wèn)題 。 87 圖 s2 對(duì)象生命期結(jié)束時(shí)內(nèi)存示意圖 ? 從圖 ,在對(duì)象 s1自動(dòng)調(diào)用析構(gòu)函數(shù)之前,其數(shù)據(jù)成員S成了懸掛指針。 ? 由于 String沒(méi)有定義拷貝構(gòu)造函數(shù) , 因此當(dāng)語(yǔ)句String s2(s1); 定義對(duì)象 s2時(shí) , 系統(tǒng)將調(diào)用默認(rèn)的拷貝構(gòu)造函數(shù) , 負(fù)責(zé)將對(duì)象 s1的數(shù)據(jù)成員 S中存放的地址值賦值給對(duì)象 s2的數(shù)據(jù)成員 S, 此時(shí)內(nèi)存空間的示意如圖 。 ? 因?yàn)樵趫?zhí)行 String a1( ”teacher”) 。 return 0。 //調(diào)用系統(tǒng)提供的默認(rèn)拷貝構(gòu)造函數(shù) ()。 } int main() { String s1(“teacher”)。 } 84 String::~String() //析構(gòu)函數(shù)的定義 { if(S) delete[]S。 strcpy(S, p)。 }。 //構(gòu)造函數(shù)聲明 ~String()。 class String { private: char *S。 83 【例 】 關(guān)于淺拷貝的例子。 程序的運(yùn)行結(jié)果為: 82 淺拷貝和深拷貝 ? 所謂 淺拷貝 , 就是由默認(rèn)的拷貝構(gòu)造函數(shù)所實(shí)現(xiàn)的數(shù)據(jù)成員逐一賦值 。 return 0。 obj3=fun(obj2)。 //調(diào)用拷貝構(gòu)造函數(shù) , 此語(yǔ)句等效于 Date day4(day2)。 Date obj2(obj1)。 } int main() { Date obj1(1999,3,20)。 } Date Fun(Date date2) //以類的對(duì)象作為形式參數(shù) { Date date3(date2)。 coutCopy Constructing...endl。 month=。 80 Date::Date(const Date amp。 coutConstructing...endl。 month=m。 }。 //拷貝構(gòu)造函數(shù)聲明 ~Date() //析構(gòu)函數(shù)的定義 {
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1