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

正文內(nèi)容

第7章類和對(duì)象-文庫吧資料

2024-11-01 15:03本頁面
  

【正文】 類名 *數(shù)組名 [下標(biāo) ]… 在內(nèi)存的堆區(qū)中創(chuàng)建和刪除對(duì)象 , 使用 new運(yùn)算符和 delete運(yùn)算符 。 i++) pa[i]print( )。 for(int i=0。a2, amp。 A *pa[3]={ amp。 } }。 b = y 。 b=0。 include class A{ int a,b。 } } (2) 指向?qū)ο髷?shù)組的指針 指向?qū)ο髷?shù)組的指針定義格式為: 類名 ( *〈 指針名 〉 ) [下標(biāo)說明 ] 例如: Date (*pd)[4] 。j++) (*(*(p+i)+j)).print()。i++) //雙重循環(huán)將 p指針?biāo)赶虻臄?shù)組元素進(jìn)行輸出 { for(int j=0。 //定義一個(gè)指向一維對(duì)象數(shù)組的指針 p, //并用數(shù)組名 point進(jìn)行初始化 , 使指針 p指向數(shù)組 point for( i=0。j++) point[i][j]=Point(i+10, j+15)。i++) // 通過雙重 for循環(huán)給 point對(duì)象數(shù)組各元素賦值 for(int j=0。 // point是二維對(duì)象數(shù)組 for(int i=0。 }。 y = b 。 public: Point(){x = y = 0 。 i++) dates[i].print ( ) 。 for(int i=0 。 dates[2]=Date (1998,8,9) 。 } 。 day = d 。} Date ( int y , int m , int d ) {year = y 。 class Date { int year, month, day 。 只是賦初值和賦值的方法不同于普通數(shù)組 。 這種數(shù)組與普通數(shù)據(jù)類型的數(shù)組相比 ,特殊之處在于數(shù)組元素是某個(gè)類的對(duì)象 , 不僅具有數(shù)據(jù)成員 , 而且還具有函數(shù)成員 。 ( )。 f(a,b)。 ( )。 } 例 對(duì)象引用作函數(shù)參數(shù) void main() { A a(3,4),b。a2) //第一個(gè)形參是對(duì)象 ,第二個(gè)形參是對(duì)象引用 { (5,6)。} }。 y = j 。 y = 。} void copy( A amp。} A(int i ,int j ) {x = i 。 include class A{ int x,y。 } 程序運(yùn)行結(jié)果如下: 3,4 3,4 3,4 2,5 (3) 對(duì)象引用作函數(shù)參數(shù) 對(duì)象引用作函數(shù)參數(shù)具有用對(duì)象的指針作函數(shù)參數(shù)的優(yōu)點(diǎn) , 能達(dá)到傳地址調(diào)用的效果 , 而且對(duì)象引用作函數(shù)參數(shù)將更簡(jiǎn)單 、 更直接 , 因此 , 在實(shí)際應(yīng)用中 。b對(duì)應(yīng)于對(duì)象指針形參 ()。b)。 ()。a)。 } 例 對(duì)象指針作函數(shù)參數(shù) void main() { A a(3,4),b。 void f (A a1, A *a2) //第一個(gè)形參是對(duì)象 ,第二個(gè)形參是對(duì)象指針 { (5,6)。} void print( ) {coutx”,”yendl 。} //指針作成員函數(shù) copy( )的形參 void Setxy( int i, int j) {x = i 。} void copy( A * p) { x = px 。} A(int i, int j ) {x = i 。 include class A{ int x,y。 ( 2) 實(shí)參僅將對(duì)象的地址值傳遞給形參 , 而不進(jìn)行副本的拷貝 , 這樣可以提高程序運(yùn)行效率 , 減少時(shí)空開銷 。 因?yàn)槭褂脤?duì)象指針作函數(shù)參數(shù)有如下兩點(diǎn)好處: ( 1) 實(shí)現(xiàn)傳址調(diào)用 。 // 調(diào)用 Sqra( ) 函數(shù) , 實(shí)參是對(duì)象 r cout”the value of the r has a value of:”( )endl。 } void main( ) { A r(10)。 void Sqra( A ob) //類 A對(duì)象做函數(shù)形參 { (( ) * ( ))。} int Geta( ) {return a。 public: A(int i) { a = i 。 因此函數(shù)中對(duì)對(duì)象的任何修改均不影響調(diào)用函數(shù)的對(duì)象本身 。 對(duì)象指針和引用作函數(shù)參數(shù) (1) 對(duì)象名作函數(shù)參數(shù) 對(duì)象可以作為參數(shù)傳遞給函數(shù) , 其方法與普通變量作函數(shù)參數(shù)相同 。 從程序輸出結(jié)果中可看出:對(duì) q的操作實(shí)際上是對(duì) p的操作 。 ( )。 // 通過對(duì)象引用 q調(diào)用成員函數(shù) (10,15)。 // 定義對(duì)象 p的引用 q ( ) 。 // 定義類 M的對(duì)象 p M amp。} }。 y = j 。 y = j 。 public: M( ){x = y = 0 。 分析右邊程序,觀察程序中對(duì)象引用的定義和使用。 定義 p是類 Point的對(duì)象的引用 , 初始化為引用 Point對(duì)象 A, 這里要求 A已經(jīng)有定義 , 而引用 p僅僅是它的別名 。 // 定義了類 Point的對(duì)象的引用 , 并用對(duì)象 A進(jìn)行初始化 引用是變量的別名 。引用名 =對(duì)象名; 例如: Point A; //定義類 Point的對(duì)象 A Point amp。既然this是一個(gè)指針變量,也可以使用 *this來標(biāo)識(shí)正在調(diào)用該函數(shù)的對(duì)象的名稱。而將成員函數(shù) print()轉(zhuǎn)換成如下形式: void print( A *this) { coutthisa”, ”this b endl 。a2) 。a1) 。 () 。 ( )。 void main( ) { A a1 , a2(1,3)。} void print( ) {couta”,”bendl 。} A(int i , int j){ a = i 。 public: A( ) {a = 0 。如果不同的對(duì)象調(diào)用同一個(gè)成員函數(shù) , 編譯程序?qū)⒏鶕?jù)該成員函數(shù)的 this指針指向的對(duì)象來確定應(yīng)該引用哪一個(gè)對(duì)象的成員 。 //用指針 p引用對(duì)象成員函數(shù) print( ) } 程序運(yùn)行結(jié)果為: Constructor called. x=3 y=4 x=3 y=4 this指針 this指針是一個(gè)隱含于每一個(gè)類的成員函數(shù) ( 包括構(gòu)造函數(shù)和析構(gòu)函數(shù) ) 中的特殊指針 , 用來指向正在被某個(gè)成員函數(shù)操作的對(duì)象 。obj。 //定義類 Exe的對(duì)象 obj和類 Exe的對(duì)象的指針 p ( )。 } }。 cout”Constructor called.”endl。 public: Exe(int a,int b) { x = a 。 不同的對(duì)象變量可以自己的數(shù)據(jù)成員和函數(shù)成員 。 // 將指針 p1和 p2分別指向?qū)ο?point1和 point2 對(duì)象指針用來存放對(duì)象存儲(chǔ)空間的首地址 。 p2=amp。 // 定義了類 Point的兩個(gè)對(duì)象 point point2 Point *p1, *p2 ; // 定義了指向類 Point的對(duì)象的指針 p p2 p1=amp。 coutb1endl。 }。 public: B(int i,int j,int k):a(k,j) { b1=i。 } class B{ A a。 void B::printB( ){ ( )。 public: B(int i,int j,int k) : a(k,j) , b1(i) { } void printB ( )。 } 在類 B的成員也可以用初始化列表的方法來初始化: class B{ A a。 void B::printB( ){ ( )。} void printB ( )。 int b1。} }。 a2=j。 include class A{ int a1,a2。 格式為: 類名::構(gòu)造函數(shù)名 ( 參數(shù)表 ) :對(duì)象成員 1( 參數(shù)表1) , 對(duì)象成員 2( 參數(shù)表 2) … { // 構(gòu)造函數(shù)函數(shù)體 } 其中 參數(shù)表 包含了 參數(shù)表 1和 參數(shù)表 2… 中的參數(shù) 。 public: … }。 class B { private: A a1,a2。當(dāng)一個(gè)類的成員是某個(gè)類的對(duì)象時(shí),該成員叫做類的對(duì)象成員。 習(xí)題 個(gè)練習(xí) 。 然后才是 main()函數(shù)的定義 。 //類定義體 }now。 對(duì)象的生存期 特別值得一提的是全局對(duì)象的定義 。 // 訪問 p1對(duì)象的成員函數(shù) 正如普通變量有作用域與生存期 , 對(duì)象也有自己的作用域和生命期 。 p1 . y 。 前面定義的 Complex類的對(duì)象 c1和c2來說,其內(nèi)存分配情況如右圖所示: 對(duì)象成員通常用 “ .”運(yùn)算符進(jìn)行訪問 。只要建立對(duì)象,構(gòu)造函數(shù)馬上就被調(diào)用,進(jìn)行實(shí)例化和初始化工作。 對(duì)象名表 中 , 可以是一般的對(duì)象名 , 也可以是指向?qū)ο蟮闹羔樆驅(qū)ο蟮囊?, 還可以是對(duì)象數(shù)組名 。 正像定義 int 類型的變量一樣 , 創(chuàng)建類類型 Point 的對(duì)象也被看作定義 Point 類型的變量 。 缺省析構(gòu)函數(shù)是一個(gè)空函數(shù) 。當(dāng)實(shí)例化該類對(duì)象沒有指明參數(shù)時(shí),編譯系統(tǒng)便按無參構(gòu)造函數(shù)來初始化該對(duì)象。 如果在類定義時(shí)定義了構(gòu)造函數(shù),則系統(tǒng)將不再自動(dòng)提供缺省構(gòu)造函數(shù)。 } 執(zhí)行該程序后,輸出結(jié)果如下: Constructor called. Constructor called. The point is : (3,4) The point is : (2,3) The distance between point1 and point2 is : The destructor is called. The destructor is called. 缺省構(gòu)造函數(shù)和缺省析構(gòu)函數(shù) 在實(shí)際應(yīng)用中,通常需要給每個(gè)類定義構(gòu)造函數(shù)。 c = sqrt (a*a + b*b) 。 a = ( ) ( ) 。 ( ) 。 void main ( ){ double a, b ,c。} void Print ( ) {coutThe point is : (x, y)endl。} // 析構(gòu)函數(shù) double GetX ( ) {return x 。 cout Constructor called. endl 。 public: Point (double a , double b) // 構(gòu)造函數(shù) { x = a 。 在下面兩種情況下 , 析構(gòu)函數(shù)會(huì)被自動(dòng)調(diào)用:其一 , 在一個(gè)函數(shù)體內(nèi)定義的對(duì)象 , 則當(dāng)這個(gè)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1