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

正文內(nèi)容

c講義完整版ppt課件-wenkub.com

2025-05-09 04:19 本頁面
   

【正文】 } void B::Display() { ()。 void Display()。 友元類 class A { friend class B。 coutThe distance is dendl。 double dy=。 }。} friend double Distance( Pointamp。但這種開放在某些時(shí)候是非常必要的,尤其是對(duì)于操作符的重載 友元函數(shù) ? 友元函數(shù)是在類定義中由關(guān)鍵字 friend修飾說明的非成員函數(shù),在它的函數(shù)體中能夠通過對(duì)象名訪問 private 和 protected成員 ? 訪問對(duì)象中的成員必須通過對(duì)象名 友元函數(shù) include include class Point { public: Point(double xi, double yi) {X=xi。 private: static int Number。 int XCoord()。 //錯(cuò)誤 A a。 // 非推薦方式 ? 靜態(tài)成員函數(shù)也有三種類型 ? 公有靜態(tài)成員函數(shù) ? 私有靜態(tài)成員函數(shù) ? 保護(hù)型靜態(tài)成員函數(shù) ? 公有靜態(tài)成員函數(shù)可以在類外進(jìn)行調(diào)用 ? 私有靜態(tài)成員函數(shù)可以在類內(nèi)進(jìn)行調(diào)用 ? 保護(hù)型靜態(tài)成員函數(shù)可以在類內(nèi)或其子類中調(diào)用 靜態(tài)成員函數(shù) ? 類的靜態(tài)成員函數(shù)不能試圖直接訪問普通數(shù)據(jù)成員和調(diào)用普通成員函數(shù) class A { public: static void f1()。 ? 靜態(tài)成員函數(shù)也可以象普通成員函數(shù)那樣調(diào)用 ? Student s。 }。 int grade。 cout endl。 靜態(tài)數(shù)據(jù)成員 ? 例子:給予上面的類說明 include int Score::passmark = 50。 Score() { Score::passmark=60。 int maths。 …. } void main() { Score s。 Score()。 int maths。 …… } Static int Score::passmark = 60。 ? 上述定義和初始化必須放在 main()函數(shù)的外面來進(jìn)行,象全局變量一樣 int Score::passmark = 60。 ~Score()。 int history。 cout‘(‘()‘,‘ ()‘)‘endl。 } void CPoint:: Move(int xOffset, int yOffset) { X+= xOffset。 CPoint:: TPoint(int x,int y) { X=x。 int YCoord()。 }。 }。 int pop()。 class CStack{ public: CStack()。 void Value()。 } 類的應(yīng)用舉例 運(yùn)行結(jié)果 Enter the radius of the pool: 40 Fencing Cost is $ Concrete Cost is $ 課堂練習(xí) 用類實(shí)現(xiàn)計(jì)數(shù)器抽象數(shù)據(jù)類型 class CCounter{ public: CCounter()。 類的應(yīng)用舉例 // 計(jì)算柵欄造價(jià)并輸出 FenceCost = () * FencePrice。 // 提示用戶輸入半徑 cout Enter the radius of the pool: 。 類的應(yīng)用舉例 // 類的實(shí)現(xiàn) // 構(gòu)造函數(shù)初始化數(shù)據(jù)成員 radius Circle::Circle(float r): radius(r) { } // 計(jì)算圓的周長 float Circle::Circumference() const { return 2 * PI * radius。 public: Circle(float r)。 游泳池 過道 類的應(yīng)用舉例 include const float PI = 。 (10) } 例 1 ? 該例子中調(diào)用了 4次構(gòu)造函數(shù); ? 對(duì)應(yīng)地,程序也要調(diào)用 4次析構(gòu)函數(shù); 類的應(yīng)用舉例 ? 一圓型游泳池如圖所示,現(xiàn)在需在其周圍建一圓型過道,并在其四周圍上柵欄。 (5) Account * pact = 0。 } 例 1 (1) Account global( “James Joyce” )。 unsigned int _acct_nmbr。 Account ( const Account amp。 ? 如果程序中未定義析構(gòu)函數(shù),編譯器將自動(dòng)產(chǎn)生一個(gè)缺省的析構(gòu)函數(shù)。 } String * s1 = new String( “Bin Wang”)。 strcpy(str, s)。 }。 String(String amp。 } String * s1 = new String(“Bin Wang”)。 String::String() { str = 0。 Bin Wang 指針 p1 指針 p2 淺拷貝與深拷貝 ? 淺拷貝 通過一個(gè)例子來理解淺拷貝的概念 C++的例子 Class String { String()。 //調(diào)用拷貝構(gòu)造函數(shù) , 為被返回 // 的對(duì)象建立一個(gè)臨時(shí)對(duì)象 拷貝構(gòu)造函數(shù) ? 課堂提問 既然系統(tǒng)能夠自動(dòng)生成一個(gè)默認(rèn)的拷貝構(gòu)造函數(shù),那么用戶是否還有必要生成自己的拷貝構(gòu)造函數(shù)呢?理由是什么? 淺拷貝與深拷貝 ? 淺拷貝 通過一個(gè)例子來理解淺拷貝的概念 C語言的例子 char * p1, *p2。 Location L2(L1)。} int GetY() {return Y。 Y=yy。 d_String str。 // 調(diào)用系統(tǒng)生成的缺省構(gòu)造函數(shù) 缺省構(gòu)造函數(shù) Class d_String { Public: //d_String()。 // 缺省構(gòu)造函數(shù) //d_String(const d_String *)。 d_String(const char *)。 return *this。 Private: …… .// 數(shù)據(jù)成員說明 }。 Screen amp。 Screen amp。 ? PrintAll(ArrayX * this)。 }。 void WriteX( int n, double val)。 //調(diào)用 void print() const } 隱含的 this指針 ? 來看一個(gè)例子 Class ArrayX { Private : int dim。 } void main() { R a(5,4)。 }。R2=r2。 …… } const成員函數(shù) ? const成員函數(shù)含義是該函數(shù)只能讀取該類中的成員數(shù)據(jù),而不能修改,因此 ? 該成員函數(shù)不能修改所在類的成員數(shù)據(jù) ? 該成員函數(shù)不能調(diào)用所在類中的非 const成員函數(shù) ? 根據(jù) const成員函數(shù)的定義 ? 不能將構(gòu)造函數(shù)定義為 const類型,因?yàn)樗跏蓟蓡T數(shù)據(jù)的值 ? const關(guān)鍵字可以被用于參與對(duì)重載函數(shù)的區(qū)分 ? const是函數(shù)類型的一個(gè)組成部分,因此在實(shí)現(xiàn)部分也要帶 const關(guān)鍵字。 …… .. }。 Account(const char * name, double balance, int acct_nmbr) : balance = balance, _acct_nmbr = acct_nmbr。 _acct_nmbr = acct_nmbr。 }。 // 調(diào)用缺省構(gòu)造函數(shù) d_String str1=d_String(―Bing Wang‖)。 構(gòu)造函數(shù) ? 對(duì)象的初始化 d_String str1。 // 編譯錯(cuò)誤 必須將該構(gòu)造函數(shù)變?yōu)楣谐蓡T 構(gòu)造函數(shù) ? 一個(gè)類可以有多個(gè)構(gòu)造函數(shù),和普通函數(shù)一樣,同名的構(gòu)造函數(shù)相互重載 Class d_String { Public: d_String()。 }。 ? 如果程序中未定義出,則系統(tǒng)自動(dòng)產(chǎn)生出一個(gè) 缺省形式 的構(gòu)造函數(shù) 缺省構(gòu)造函數(shù) ? 允許為 內(nèi)聯(lián) 構(gòu)造函數(shù)、 重載 構(gòu)造函數(shù)、 帶缺省形參值 的構(gòu)造函數(shù) 構(gòu)造函數(shù) ? 定義說明 ? 構(gòu)造函數(shù)名與所在的類名相同; ? 構(gòu)造函數(shù)沒有返回類型,因此在定義構(gòu)造函數(shù)時(shí)不能帶有任何帶有返回值的返回語句; ?不能將構(gòu)造函數(shù)說明為 void類型; ?可以有返回語句 return。 (8,30,30)。 }。 }。 void ShowTime()。 i=。 void ShowTime()。 // 編譯錯(cuò)誤,試圖訪問私有成員數(shù)據(jù) (…… )。 }。 ? 如果 緊跟在類名稱的后面聲明私有成員,則 關(guān)鍵字 private可以 省略。 Y=initY。 int GetY()。} private: int X,Y。 類的概念和定義 ? 內(nèi)聯(lián)成員函數(shù)的內(nèi)部實(shí)現(xiàn) class Location { public: void Init(int initX, int initY) { X=initX。也可以直接在類中定義函數(shù)體,形成內(nèi)聯(lián)成員函數(shù)。 Minute=NewM。 void ShowTime()。 }。 抽象的行為 面向?qū)ο缶幊傻幕咎攸c(diǎn) 封裝 ? 將實(shí)現(xiàn)細(xì)節(jié)涉及到的數(shù)據(jù)成員、實(shí)現(xiàn)代碼封裝在類中,對(duì)外是不可見的。 ? 抽象出來的數(shù)據(jù)和行為對(duì)外是可見的 面向?qū)ο缶幊傻幕咎? 抽象 class Watch { public: void SetTime(int NewH, int NewM, int NewS)。 ? 只注意問題的本質(zhì)及描述,而忽略實(shí)現(xiàn)過程或細(xì)節(jié)。 練習(xí) 建立動(dòng)態(tài)整型數(shù)組 用戶輸入數(shù)組長度, 并且用戶輸入初始化數(shù)組, 求和并打印到屏幕。 如果 new返回的指針值丟失,則所分配的堆空間無 法回收,稱內(nèi)存泄漏,同一空間重復(fù)釋放也是危險(xiǎn) 的,所以必須妥善保存 new返回的指針,以保證不 發(fā)生內(nèi)存泄漏,也必須保證不會(huì)重復(fù)釋放堆內(nèi)存空 間。 2.指針刪除與堆空間釋放。盡管 C++不對(duì)數(shù)組作邊界檢查,但在堆空間分配時(shí),對(duì)數(shù)組分配空間大小是紀(jì)錄在案的。 delete []pc。 cinn。 } … delete [] array。 堆內(nèi)存的分配與釋放 堆 P i 堆內(nèi)存的分配與釋放 對(duì)于數(shù)組進(jìn)行動(dòng)態(tài)分配的格式為: 指針變量名 =new 類型名 [下標(biāo)表達(dá)式 ]。 注意這時(shí)釋放了 pi所指的目標(biāo)的內(nèi)存空間,也就是撤銷了該目標(biāo),稱動(dòng)態(tài)內(nèi)存釋放( dynamic memory deallocation),但指針 pi本身并沒有撤銷,它自己仍然存在,該指針?biāo)純?nèi)存空間并未釋放。失?。?0( NULL) 堆內(nèi)存的分配與釋放 ? delete delete 指針 P 功能: 釋放指針 P所指向的內(nèi)存。 exit(1)。對(duì)所創(chuàng)建的變量或?qū)ο螅际峭ㄟ^該指針來間接操作的,而 動(dòng)態(tài)創(chuàng)建的對(duì)象本身沒有名字。 堆內(nèi)存的分配與釋放 當(dāng)程序運(yùn)行到需要一個(gè)動(dòng)態(tài)分配的變量或?qū)ο髸r(shí) , 必須向系統(tǒng)申請(qǐng)取得堆中的一塊所需大小的存貯空間 , 用于存貯該變量或?qū)ο?。j=i。 cout―j=‖ jendl。 cout―i=‖ iendl。打印交換前后 a,b的值。a。} ; double fun(void) { } void型。 ? const_ptr =(int * const) amp。 ? const int * ptr_to_const = amp。 ? void * const ptr2。 // 正確 *ptr = *pt
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1