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

正文內(nèi)容

第7章類和對象-免費閱讀

2024-11-25 15:03 上一頁面

下一頁面
  

【正文】 } void main(){ Member obj1( 35, Tom)。 public: Member( int a, char *str) { age = a 。 ( 2) 一個類的成員函數(shù)作為另一個類的友元函數(shù)時 , 必須先定義這個類 。 // 說明類 X的成員函數(shù) show( ) 是類 Y的友元 }。 // 類 X的公有成員函數(shù) , 形參是類 Y的對象的引用 }。 include class Y。 // 友元類 Y的成員函數(shù)中訪問類 X的靜態(tài)數(shù)據(jù)成員 } 例 友元類的使用實例 void main( ) { X b 。 class Y{ X a 。 將類 A說明為類 B的友元類的語法格式為: class B{ … … friend class A 。 B. print( ) 。 //說明 distance( )是 Point類的友元函數(shù) }。 友元函數(shù)與成員函數(shù)一樣既可以定義在類的內(nèi)部 , 也可以定義在類的外部 。 答案: 類的友員 類的主要特征之一是數(shù)據(jù)隱藏 , 只有類的成員函數(shù)才能訪問類的私有成員 , 程序中的其它函數(shù)是無法訪問私有成員的 。 ()。 coutcount=Application::countendl。 return NULL。 Application *Application::instance=NULL。 一般靜態(tài)成員函數(shù)不能訪問類中的非靜態(tài)成員 。 } 例 靜態(tài)成員函數(shù)調(diào)用 運行結(jié)果如下: x = 6 y = 14 x = 8 y = 14 說明:該程序的 A類中 , 聲明并定義了靜態(tài)成員函數(shù) fun( ) , 在該函數(shù)的函數(shù)體中訪問類的非靜態(tài)成員是通過對象進行的 。} static void fun(A a) 。這個靜態(tài)數(shù)據(jù)成員的訪問控制權(quán)限是私有的 , 在成員函數(shù)中可以直接訪問 ,而在主函數(shù)中就無法直接訪問 。 // 靜態(tài)數(shù)據(jù)成員的初始化 void main ( ) { Point A(, ) 。 y = b 。 } }。 靜態(tài)數(shù)據(jù)成員特點 3: 3.訪問靜態(tài)數(shù)據(jù)成員時,采用如下格式: 類名::靜態(tài)數(shù)據(jù)成員名 如果訪問控制權(quán)限允許的話(即為 public),可以在程序內(nèi)部不依賴于任何對象按上述格式訪問靜態(tài)數(shù)據(jù)成員。 靜態(tài)數(shù)據(jù)成員 靜態(tài)數(shù)據(jù)成員是類的所有對象共享的成員 , 所以 , 靜態(tài)成員被看作是類的成員而不是某個對象的成員 。 delete[] pd。 例: 動態(tài)對象的構(gòu)造和析構(gòu) 。 ptr = new Point(, )。 用 new運算符動態(tài)創(chuàng)建對象的語法格式為: 對象指針 = new 類名 ( 初始值列表 ) ; 該語句在程序運行過程中調(diào)用類的構(gòu)造函數(shù)為對象的數(shù)據(jù)成員分配內(nèi)存空間并為它們賦初值 , 然后返回一個指向新創(chuàng)建對象的指針 。a1, amp。 public: A(){ a=0。i2。 void main() { Point point[2][3]。 i4 。 month = m 。 } 運行結(jié)果如下: 3,4 3,4 3,4 2,5 對象數(shù)組 (1) 對象數(shù)組的定義 對象數(shù)組是指數(shù)組元素為對象的數(shù)組 。 (2,5)。 p) { x = 。 ()。 (amp。 y = py 。 可在被調(diào)用函數(shù)中改變調(diào)用函數(shù)的參數(shù)對象的值 , 實現(xiàn)對象之間的信息傳遞 。} }。 因此: (10,15) 等價于 (10,15)。q = p 。} M(int i ,int j){ x = i。p = A 。 print (amp。 } } 。 當通過一個對象調(diào)用成員函數(shù)時 , 編譯程序先將對象的地址賦給 this指針 , 然后調(diào)用成員函數(shù) , 每次成員函數(shù)存取數(shù)據(jù)成員時 , 則隱含使用 this指針 。 } void print( ) { cout”x=”x” y=”yendl。point2 。} void printB ( )。 int b1。 class B{ A a。 2. 對象成員的初始化 在類中出現(xiàn)對象成員時 , 該類的構(gòu)造函數(shù)要包含對對象成員的初始化 ,通常采用成員初始化列表的方法來初始化對象成員 ( 即子對象 ) 。 全局對象的構(gòu)造函數(shù)在 main()函數(shù)執(zhí)行之前被調(diào)用 ,析構(gòu)函數(shù)在 main()函數(shù)執(zhí)行到最后的花括號 ( 即程序退出 ) 時被調(diào)用 。 // 訪問 p1對象的 x成員和 y成員 p1 . print( ) 。 對象在它的類確定了以后 , 定義格式為: 類名 對象名表 例如 , 定義 (或者說創(chuàng)建 )兩個點類 Point 的對象: Point p1 , p2 ( , ) 。如果在類定義時沒有定義任何構(gòu)造函數(shù),則編譯系統(tǒng)自動生成一個不帶參數(shù)的 缺省構(gòu)造函數(shù) , 例如:編譯系統(tǒng)為 Complex類生成下述形式的缺省構(gòu)造函數(shù): Complex :: Complex() {} 用缺省構(gòu)造函數(shù)進行對象初始化時,將對象的所有數(shù)據(jù)成員都初始化為零或空。 Point p1(, ), p2 ( , )。 y = b 。 在對象刪除前 , 用它來做一些清理工作 , 如釋放分配對對象的內(nèi)存空間等 。 } … }。 else hour=h。 public: Clock(int h, int m, int s) //構(gòu)造函數(shù)定義 { if(s0) second=0。 構(gòu)造函數(shù)的特殊性質(zhì): ( 1) 構(gòu)造函數(shù)與類同名 , 其訪問控制屬性為 public。 t = real * real + image * image 。 例:定義一個復數(shù)類,所有成員函數(shù)都在類體中定義。 引入內(nèi)聯(lián)函數(shù) , 既能得到宏指令代碼重用 、 不增加時間開銷的優(yōu)點 , 又能避免宏指令的變元替換可能引起的副作用 。 類的數(shù)據(jù)成員也可以是其它類的對象 。 } double Point :: GetX ( ) //定義成員函數(shù) GetX ( ) { return x 。 私有成員通常是一些數(shù)據(jù)成員 。 其中 , 函數(shù)成員又稱成員函數(shù)或 “ 方法 ” , 用于對數(shù)據(jù)成員進行各種操作 。 類實現(xiàn)部分 用來對成員函數(shù)進行定義 。 private權(quán)限為類帶來了封裝性 , 它使私有成員隱藏起來 , 不能從類的外部對它們進行訪問 , 或者說它們從類外部是不可見的 , 只有類自己的成員函數(shù)才可以訪問它們。} double Point :: GetY ( ) //定義成員函數(shù) GetY ( ) { return y 。 但應(yīng)注意: a. 類自身的對象不能作為類的成員; b. 指向類自身的對象指針或引用可以作為類的成員 。 在程序中通常對重復調(diào)用次數(shù)多且代碼較短的函數(shù)定義為內(nèi)聯(lián)函數(shù) 。 class Complex{ double real 。 return sqrt(t)。 構(gòu)造函數(shù)可以有一個或多個任意類型的參數(shù) 。 if (s=60) second =s%60。 } void print(){ couthour”:”minute”:”secondendl。 這里類A的構(gòu)造函數(shù)沒有帶參數(shù) , 在程序中可以采用如下方式創(chuàng)建類A的對象: A a1。 析構(gòu)函數(shù)有以下一些特性: [1] 函數(shù)的名字與類名相同 , 并在前面加一個 “ ~ ”字符 , 用來與構(gòu)造函數(shù)相區(qū)別 。 cout Constructor called. endl 。 ( ) 。 如果在類定義時定義了構(gòu)造函數(shù),則系統(tǒng)將不再自動提供缺省構(gòu)造函數(shù)。 對象名表 中 , 可以是一般的對象名 , 也可以是指向?qū)ο蟮闹羔樆驅(qū)ο蟮囊?, 還可以是對象數(shù)組名 。 // 訪問 p1對象的成員函數(shù) 正如普通變量有作用域與生存期 , 對象也有自己的作用域和生命期 。 習題 個練習 。 格式為: 類名::構(gòu)造函數(shù)名 ( 參數(shù)表 ) :對象成員 1( 參數(shù)表1) , 對象成員 2( 參數(shù)表 2) … { // 構(gòu)造函數(shù)函數(shù)體 } 其中 參數(shù)表 包含了 參數(shù)表 1和 參數(shù)表 2… 中的參數(shù) 。 int b1。 public: B(int i,int j,int k) : a(k,j) , b1(i) { } void printB ( )。 }。 // 將指針 p1和 p2分別指向?qū)ο?point1和 point2 對象指針用來存放對象存儲空間的首地址 。 } }。如果不同的對象調(diào)用同一個成員函數(shù) , 編譯程序?qū)⒏鶕?jù)該成員函數(shù)的 this指針指向的對象來確定應(yīng)該引用哪一個對象的成員 。 void main( ) { A a1 , a2(1,3)。a2) 。 // 定義了類 Point的對象的引用 , 并用對象 A進行初始化 引用是變量的別名 。 y = j 。 // 定義對象 p的引用 q ( ) 。 對象指針和引用作函數(shù)參數(shù) (1) 對象名作函數(shù)參數(shù) 對象可以作為參數(shù)傳遞給函數(shù) , 其方法與普通變量作函數(shù)參數(shù)相同 。 void Sqra( A ob) //類 A對象做函數(shù)形參 { (( ) * ( ))。 ( 2) 實參僅將對象的地址值傳遞給形參 , 而不進行副本的拷貝 , 這樣可以提高程序運行效率 , 減少時空開銷 。} //指針作成員函數(shù) copy( )的形參 void Setxy( int i, int j) {x = i 。a)。 } 程序運行結(jié)果如下: 3,4 3,4 3,4 2,5 (3) 對象引用作函數(shù)參數(shù) 對象引用作函數(shù)參數(shù)具有用對象的指針作函數(shù)參數(shù)的優(yōu)點 , 能達到傳地址調(diào)用的效果 , 而且對象引用作函數(shù)參數(shù)將更簡單 、 更直接 , 因此 , 在實際應(yīng)用中 。 y = 。 } 例 對象引用作函數(shù)參數(shù) void main() { A a(3,4),b。 這種數(shù)組與普通數(shù)據(jù)類型的數(shù)組相比 ,特殊之處在于數(shù)組元素是某個類的對象 , 不僅具有數(shù)據(jù)成員 , 而且還具有函數(shù)成員 。 day = d 。 i++) dates[i].print ( ) 。 // point是二維對象數(shù)組 for(int i=0。i++) //雙重循環(huán)將 p指針所指向的數(shù)組元素進行輸出 { for(int j=0。 b=0。a2, amp。 此后在程序中就可以通過該指針訪問此動態(tài)創(chuàng)建的對象 。 if (ptr==NULL) { … ; //內(nèi)存分配失敗的善后處理 } else { … 。 include class Date{ int year, month, day 。 } 顯然 , 在程序執(zhí)行 pd=new Date[3]。 在一個類中,若將一個數(shù)據(jù)成員說明為 static,這個成員就成為靜態(tài)數(shù)據(jù)成員。 靜態(tài)數(shù)據(jù)成員通常用于對一個
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1