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

正文內(nèi)容

第7章類和對(duì)象(編輯修改稿)

2024-11-29 15:03 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 引用是變量的別名 。 為對(duì)象建立引用時(shí) , 程序中應(yīng)該用另一個(gè)對(duì)象的名字來(lái)初始化它 , 自此 , 引用作為目標(biāo)對(duì)象的別名 , 對(duì)引用的改動(dòng) , 實(shí)際上就是對(duì)目標(biāo)對(duì)象的改動(dòng) 。 定義 p是類 Point的對(duì)象的引用 , 初始化為引用 Point對(duì)象 A, 這里要求 A已經(jīng)有定義 , 而引用 p僅僅是它的別名 。 引用不是值,不占存儲(chǔ)空間,定義引用時(shí),目標(biāo)對(duì)象的存儲(chǔ)不會(huì)改變。 分析右邊程序,觀察程序中對(duì)象引用的定義和使用。 include class M{ int x , y 。 public: M( ){x = y = 0 。} M(int i ,int j){ x = i。 y = j 。} void Setxy(int i, int j){ x = i 。 y = j 。} void print( ){coutx”,”yendl。} }。 void main( ){ M p(3, 4)。 // 定義類 M的對(duì)象 p M amp。q = p 。 // 定義對(duì)象 p的引用 q ( ) 。 // 通過(guò)對(duì)象調(diào)用成員函數(shù) ( ) 。 // 通過(guò)對(duì)象引用 q調(diào)用成員函數(shù) (10,15)。 //通過(guò)對(duì)象引用 q調(diào)用成員函數(shù) ( )。 ( )。 } 程序輸出: 3, 4 3, 4 10, 15 10, 15 說(shuō)明:類 M的對(duì)象 p和 p的引用 q。 從程序輸出結(jié)果中可看出:對(duì) q的操作實(shí)際上是對(duì) p的操作 。 因此: (10,15) 等價(jià)于 (10,15)。 對(duì)象指針和引用作函數(shù)參數(shù) (1) 對(duì)象名作函數(shù)參數(shù) 對(duì)象可以作為參數(shù)傳遞給函數(shù) , 其方法與普通變量作函數(shù)參數(shù)相同 。 在向函數(shù)傳遞對(duì)象時(shí) , 是通過(guò)傳值調(diào)用傳遞給函數(shù)的 , 也就是說(shuō)把對(duì)象的拷貝而不是對(duì)象本身傳給函數(shù) 。 因此函數(shù)中對(duì)對(duì)象的任何修改均不影響調(diào)用函數(shù)的對(duì)象本身 。 include class A{ int a 。 public: A(int i) { a = i 。} void Seta(int n) { a = n 。} int Geta( ) {return a。} }。 void Sqra( A ob) //類 A對(duì)象做函數(shù)形參 { (( ) * ( ))。 cout”the copy of ob has a value of:”( )endl。 } void main( ) { A r(10)。 // 定義類 A的對(duì)象 Sqra( r )。 // 調(diào)用 Sqra( ) 函數(shù) , 實(shí)參是對(duì)象 r cout”the value of the r has a value of:”( )endl。 } 例 :對(duì)象名作函數(shù)參數(shù) 執(zhí)行程序 , 輸出結(jié)果如下: the copy of ob has a value of: 100 the value of the r has a value of : 10 (2 ) 對(duì)象指針作函數(shù)參數(shù) 同其它類型變量一樣 , 也可以將對(duì)象地址傳遞給函數(shù) , 即使用對(duì)象指針作為函數(shù)形參 , 并且這比使用對(duì)象作函數(shù)參數(shù)更普遍一些 。 因?yàn)槭褂脤?duì)象指針作函數(shù)參數(shù)有如下兩點(diǎn)好處: ( 1) 實(shí)現(xiàn)傳址調(diào)用 。 可在被調(diào)用函數(shù)中改變調(diào)用函數(shù)的參數(shù)對(duì)象的值 , 實(shí)現(xiàn)對(duì)象之間的信息傳遞 。 ( 2) 實(shí)參僅將對(duì)象的地址值傳遞給形參 , 而不進(jìn)行副本的拷貝 , 這樣可以提高程序運(yùn)行效率 , 減少時(shí)空開銷 。 對(duì)象指針作函數(shù)形參時(shí) , 要求調(diào)用函數(shù)的實(shí)參是對(duì)象的地址值 。 include class A{ int x,y。 public: A( ) {x = y = 0 。} A(int i, int j ) {x = i 。 y = j 。} void copy( A * p) { x = px 。 y = py 。} //指針作成員函數(shù) copy( )的形參 void Setxy( int i, int j) {x = i 。 y = j 。} void print( ) {coutx”,”yendl 。} }。 void f (A a1, A *a2) //第一個(gè)形參是對(duì)象 ,第二個(gè)形參是對(duì)象指針 { (5,6)。 a2Setxy(2,5)。 } 例 對(duì)象指針作函數(shù)參數(shù) void main() { A a(3,4),b。 (amp。a)。 ()。 ()。 f(a, amp。b)。 //實(shí)參對(duì)象 a對(duì)應(yīng)于對(duì)象形參a1,對(duì)象 b的地址 amp。b對(duì)應(yīng)于對(duì)象指針形參 ()。 ()。 } 程序運(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)用中 。 使用對(duì)象引用作函數(shù)參數(shù)要比使用對(duì)象指針作函數(shù)參數(shù)更普遍 。 include class A{ int x,y。 public: A( ) {x = y = 0 。} A(int i ,int j ) {x = i 。 y = j 。} void copy( A amp。 p) { x = 。 y = 。} //對(duì)象引用作成員函數(shù) copy( )的形參 void Setxy( int i, int j) {x = i 。 y = j 。} void print( ) {coutx”,”yendl 。} }。 void f (A a1, A amp。a2) //第一個(gè)形參是對(duì)象 ,第二個(gè)形參是對(duì)象引用 { (5,6)。 (2,5)。 } 例 對(duì)象引用作函數(shù)參數(shù) void main() { A a(3,4),b。 (a)。 ( )。 ( )。 f(a,b)。 //實(shí)參對(duì)象 a對(duì)應(yīng)于對(duì)象形參 a1,實(shí)參對(duì)象 b對(duì)應(yīng)于對(duì)象引用形參 ( )。 ( )。 } 運(yùn)行結(jié)果如下: 3,4 3,4 3,4 2,5 對(duì)象數(shù)組 (1) 對(duì)象數(shù)組的定義 對(duì)象數(shù)組是指數(shù)組元素為對(duì)象的數(shù)組 。 這種數(shù)組與普通數(shù)據(jù)類型的數(shù)組相比 ,特殊之處在于數(shù)組元素是某個(gè)類的對(duì)象 , 不僅具有數(shù)據(jù)成員 , 而且還具有函數(shù)成員 。 對(duì)象數(shù)組的定義格式為: 類名 數(shù)組名 [下標(biāo) 1][下標(biāo) 2]… 其中,類名指出該數(shù)組元素對(duì)象所屬的類,例如: Point point1[5]; Point point2[2][3] ; 與普通類型數(shù)組一樣 , 對(duì)象數(shù)組可以在定義時(shí)賦初值 , 也可以在程序中被賦值 。 只是賦初值和賦值的方法不同于普通數(shù)組 。 下面是一個(gè)對(duì)象數(shù)組定義和賦值的例子 。 class Date { int year, month, day 。 public: Date ( ) {year = month = day = 0 。} Date ( int y , int m , int d ) {year = y 。 month = m 。 day = d 。} void print ( )。 } 。 void main( ){ Date dates[4]={Date(2020,11,8), Date(1999,10 ,12) }。 dates[2]=Date (1998,8,9) 。 dates[3]=Date(1999,9,10) 。 for(int i=0 。 i4 。 i++) dates[i].print ( ) 。 } 的賦值 class Point{ int x,y。 public: Point(){x = y = 0 。} Point(int a,int b){x = a 。 y = b 。} void print()。 }。 void main() { Point point[2][3]。 // point是二維對(duì)象數(shù)組 for(int i=0。i2。i++) // 通過(guò)雙重 for循環(huán)給 point對(duì)象數(shù)組各元素賦值 for(int j=0。j3。j++) point[i][j]=Point(i+10, j+15)。 Point (*p)[3](point)。 //定義一個(gè)指向一維對(duì)象數(shù)組的指針 p, //并用數(shù)組名 point進(jìn)行初始化 , 使指針 p指向數(shù)組 point for( i=0。i2。i++) //雙重循環(huán)將 p指針?biāo)赶虻臄?shù)組元素進(jìn)行輸出 { for(int j=0。j3。j++) (*(*(p+i)+j)).print()。 coutendl。 } } (2) 指向?qū)ο髷?shù)組的指針 指向?qū)ο髷?shù)組的指針定義格式為: 類名 ( *〈 指針名 〉 ) [下標(biāo)說(shuō)明 ] 例如: Date (*pd)[4] 。 //pd是指向一維對(duì)象數(shù)組的指針 , 該數(shù)組元素是 Date類的對(duì)象 。 include class A{ int a,b。 public: A(){ a=0。 b=0。 } A(int x, int y){ a = x 。 b = y 。 } void print( ) { couta, bendl。 } }。 void main( ) { A a1(3,4), a2(8,9), a3。 A *pa[3]={ amp。a1, amp。a2, amp。a3 }。 for(int i=0。 i3 。 i++) pa[i]print( )。 } (3) 對(duì)象指針數(shù)組 執(zhí)行該程序輸出如下: 3, 4 8, 9 0, 0 對(duì)象指針數(shù)組的所有元素都是指向同一個(gè)類的對(duì)象的指針 。 其聲明格式如下: 類名 *數(shù)組名 [下標(biāo) ]… 在內(nèi)存的堆區(qū)中創(chuàng)建和刪除對(duì)象 , 使用 new運(yùn)算符和 delete運(yùn)算符 。 用 new運(yùn)算符動(dòng)態(tài)創(chuàng)建對(duì)象的語(yǔ)法格式為: 對(duì)象指針 = new 類名 ( 初始值列表 ) ; 該語(yǔ)句在程序運(yùn)行過(guò)程中調(diào)用類的構(gòu)造函數(shù)為對(duì)象的數(shù)據(jù)成員分配內(nèi)存空間并為它們賦初值 , 然后返回一個(gè)指向新創(chuàng)建對(duì)象的指針 。 此后在程序中就可以通過(guò)該指針訪問(wèn)此動(dòng)態(tài)創(chuàng)建的對(duì)象 。 例如: Point* ptr。 ptr = new Point(, )。 全局?jǐn)?shù)據(jù)區(qū) 代碼區(qū) 堆區(qū) 棧區(qū) C++ 的內(nèi)存布局 動(dòng)態(tài)對(duì)象 由于用 new 分配內(nèi)存不一定總能成功,比如沒(méi)有足夠的內(nèi)存空間或供分配等。此時(shí) new 操作將返回一個(gè)空指針( NULL)。如果沒(méi)有注意到 new操作失敗而去使用對(duì)象指針將會(huì)發(fā)生無(wú)法估計(jì)的后果。所以通常在每次 new 操作后應(yīng)寫一段程序檢查 new 是否成功 :
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1