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

正文內(nèi)容

第7章類和對(duì)象(參考版)

2024-10-28 15:03本頁(yè)面
  

【正文】 ()。 Member obj2( 57, Johnson)。 ()。 void main(){ Member obj1( 35, Tom), obj2( 57, Johnson)。 } void print() { coutnameis age years old.endl。 name = new char[ strlen ( str ) + 1 ]。 char *name 。 對(duì)象的內(nèi)存映象 real image real image c1 c2 real image real image C[0] C[1] real image real image … C[9] Complex c1, c2, *pc, c[10]; 定義的 Complex類的對(duì)象內(nèi)存分配情況如右圖所示: 0X00F25D44 pc 類方法代碼在內(nèi)存代碼段中,只有一份拷貝,被該類 所有對(duì)象共享。ob) 。 如上例中 , 類 X的成員函數(shù)為類 Y的友元函數(shù) , 必須先定義類 X。 } 該程序執(zhí)行后 , 輸出結(jié)果如下: the string of X is: stringx the string of Y is: stringy 友元成員使用的例子 該程序執(zhí)行后 , 輸出結(jié)果如下: the string of X is: stringx the string of Y is: stringy 說(shuō)明: ( 1) 該程序中 , 類 X的成員函數(shù) show( ) 在類 Y中說(shuō)明為友元 ,因此 , 在該友元成員 show( ) 中可以訪問(wèn)類 Y的私有成員 stry。 Y b(20 , “stringy”)。 cout”the string of Y is:”endl 。 void X::show(Y amp。ob) 。 strcpy(stry , str) 。 public: Y( int b,char *str) { y = b 。 class Y{ // 定義類 Y int y 。ob) 。 strcpy(strx,str) 。 public: X( int a ,char *str) { x = a 。 // 先聲明 Y是一個(gè)類 class X{ // 定義類 X int x 。友元成員函數(shù)不僅可以訪問(wèn)自己所在類中的私有成員,還可以訪問(wèn) friend說(shuō)明語(yǔ)句所在類 (本類 )中的私有成員和保護(hù)成員。 ( )。 Y c (6 , 9)。 (5) 。// 友元類 Y的成員函數(shù)中訪問(wèn)類 X的私有成員 cout”y = “X::yendl 。 int X::y = 1 。 // 友元類 Y的構(gòu)造函數(shù)中訪問(wèn)類 X的靜態(tài)私有數(shù)據(jù)成員 } void print ( ) 。 // a是類 Y的對(duì)象成員 public: Y( int m , int n) { = m 。 } }。 // 在類的私有部分說(shuō)明類 Y是類 X的友元類 public: void set(int a) {x = a。 static int y 。 // 說(shuō)明類 A是類 B的友元類 … … }; 說(shuō)明類 A是類 B的友元類的語(yǔ)句可以放在類 B的公有部分 , 也可以放在類 B的私有部分 。 當(dāng)類 A作為類 B的友元類時(shí) ,類 A的所有成員函數(shù)都是類 B的友元函數(shù) , 都可以訪問(wèn)類 B中的私有成員和保護(hù)成員 。 而必須通過(guò)作為入口參數(shù)傳遞進(jìn)來(lái)的對(duì)象名 、 或者對(duì)象指針 、或者對(duì)象引用來(lái)訪問(wèn)該對(duì)象的私有或保護(hù)成員 。 } 執(zhí)行程序,輸出: ( 3. 0, 4. 0) ( 6. 0, 8. 0) Distance is : 友元函數(shù)一般帶有一個(gè)本類對(duì)象作入口參數(shù) 。 double d=distance(A,B)。 A. print( ) 。 return sqrt(dx*dx+dy*dy) 。p2)// 在類體外定義友元函數(shù) { double dx= 。 double distance(Point amp。p2) 。 } friend double distance(Point amp。 y = b 。 class Point{ double x,y 。 友元說(shuō)明語(yǔ)句可以放在類的公有部分 , 也可以放在類的私有部分 。 友元函數(shù) 友元函數(shù)不是本類的成員函數(shù) , 而是獨(dú)立于本類的外部函數(shù) , 本類允許友元函數(shù)通過(guò)對(duì)象名訪問(wèn)它的私有和保護(hù)成員 。 友元既可以是不屬于任何類的一般函數(shù) , 也可以是另一個(gè)類的成員函數(shù) , 還可以是整個(gè)的一個(gè)類 。 但是 , 為了兼容早期獨(dú)立定義的一些系統(tǒng)函數(shù)或提高兩個(gè)類之間的互訪效率 , 有時(shí)需要從類外部訪問(wèn)類的私有成員 。 } }。 } void show() { coutobj objnumber 。 public: counter() { count++。 } 建立工程( Project ) Obj_counter,補(bǔ)充編寫(xiě)頭文件,在 counter, 編譯、連接 和 ,生成 ,執(zhí)行該程序正確顯示以下一行信息: obj4 count=5 : include class counter { static int count。 void main() { counter ob1,ob2,ob3,ob4,ob5。語(yǔ)句 , 則程序輸出: Single instance has created, OK!!! count=1 count=1 Can39。 coutcount=Application::countendl。 Application* ptr1。 delete ptr。 ptr=Application::init()。 } 例:?jiǎn)螌?shí)例對(duì)象模式 Application類的定義為私有的 , 只能通過(guò)公有成員函數(shù)init()間接訪問(wèn) 。 } } Application::~Application() { count=count1。t create more than one instance!!!endl。 return instance。 instance = new Application。 int Application::count=0。 }。 ~Application ( )。 Application ( ){}。 如果確實(shí)需要 , 靜態(tài)成員函數(shù)只能通過(guò)對(duì)象名 ( 或指向?qū)ο蟮闹羔?) 訪問(wèn)該對(duì)象的非靜態(tài)成員 。 在一般成員函數(shù)中都隱含有一個(gè) this指針 , 用來(lái)指向?qū)ο笞陨?, 而在靜態(tài)成員函數(shù)中是沒(méi)有 this指針的 , 因?yàn)樗慌c特定的對(duì)象相聯(lián)系 。 在類體外定義時(shí) , 不要用 static前綴 。 例如 cout”y = “y。 例如 cout”x = “。 A::fun(Q)。 } void main( ) { A P(6) , Q(8) 。 void A::fun(A a) { cout”x = “endl 。 // 靜態(tài)成員函數(shù) } 。 y += x 。 static int y 。靜態(tài)成員函數(shù)和靜態(tài)數(shù)據(jù)成員一樣,屬于類的靜態(tài)成員,而不屬于某個(gè)對(duì)象,由同一個(gè)類的所有對(duì)象共同維護(hù),為這些對(duì)象所共有。 靜態(tài)成員函數(shù) 靜態(tài)成員函數(shù)可以直接訪問(wèn)該類的靜態(tài)數(shù)據(jù)成員和成員函數(shù) , 而訪問(wèn)非靜態(tài)成員時(shí) , 必須通過(guò)對(duì)象進(jìn)行 , 即必須通過(guò)參數(shù)傳遞方式得到對(duì)象名 , 然后通過(guò)對(duì)象名來(lái)訪問(wèn) 。 運(yùn)行結(jié)果: Point A (, ) PointObject id = 1 Point B (, ) PointObject id = 2 說(shuō)明:類 Point的數(shù)據(jù)成員 count被聲明為靜態(tài) , 用來(lái)給 Point類的對(duì)象計(jì)數(shù) , 靜態(tài)數(shù)據(jù)成員 count的定義和初始化在類外進(jìn)行 。 ( )。 // 輸出對(duì)象序號(hào) Point B(, )。 coutPoint A (( ),( )) 。 int Point :: count = 0 。} void Print ( ) {coutThe point is : ( x , y) endl。 } double GetY( ) {return y 。 count++ 。 public: Point (double a = 0, double b =0) { x = a 。 } class Point { double x , y 。 void main() { counter ob1,ob2,ob3,ob4,ob5。 例 對(duì)象計(jì)數(shù)模式。 coutcount=count\n。 obj_ID=count。 int obj_ID。 靜態(tài)數(shù)據(jù)成員通常用于對(duì)一個(gè)類已創(chuàng)建的對(duì)象計(jì)數(shù)或編號(hào)。 ( 3) 初始化時(shí)必須使用作用域運(yùn)算符::來(lái)表明它所屬的類 。 靜態(tài)數(shù)據(jù)成員的初始化與一般數(shù)據(jù)成員的初始化不同 , 其格式如下: 數(shù)據(jù)類型 類名::靜態(tài)數(shù)據(jù)成員名 =值; 這表明: ( 1) 初始化是在類體外進(jìn)行的 , 在類中不為它分配內(nèi)存空間 。因?yàn)闊o(wú)論建立多少個(gè)類的對(duì)象,都只有一個(gè)靜態(tài)數(shù)據(jù)成員的拷貝,即對(duì)多個(gè)對(duì)象來(lái)說(shuō),靜態(tài)數(shù)據(jù)成員只存儲(chǔ)一處,供所有對(duì)象共用。 在一個(gè)類中,若將一個(gè)數(shù)據(jù)成員說(shuō)明為 static,這個(gè)成員就成為靜態(tài)數(shù)據(jù)成員。 靜態(tài)成員在類中有兩種情況 , 一是 靜態(tài)數(shù)據(jù)成員 , 一是 靜態(tài)函數(shù)成員 。 程序運(yùn)行結(jié)果: Constructor called Constructor called Constructor called Destructor called Destructor called Destructor called 類的靜態(tài)成員 類的靜態(tài)成員是為了解決同一個(gè)類的不同對(duì)象的數(shù)據(jù)共享和函數(shù)共享問(wèn)題 。 語(yǔ)句時(shí)三次調(diào)用了析構(gòu)函數(shù) 。 } 顯然 , 在程序執(zhí)行 pd=new Date[3]。 pd=new Date[3]。} } 。 cout”Constructor called”endl。 include class Date{ int year, month, day 。 使用 new運(yùn)算符創(chuàng)建對(duì)象數(shù)組時(shí) ,不能為該數(shù)組元素指定初始值 ,只能調(diào)用缺省參數(shù)構(gòu)造函數(shù) 。 用 new創(chuàng)建對(duì)象數(shù)組 用 delete運(yùn)算符刪除對(duì)象或?qū)ο髷?shù)組。 pc = new Complex [10] 。 if (ptr==NULL) { … ; //內(nèi)存分配失敗的善后處理 } else { … 。所以通常在每次 new 操作后應(yīng)寫(xiě)一段程序檢查 new 是否成功 : Point* ptr。此時(shí) new 操作將返回一個(gè)空指針( NULL)。 ptr = new Point(, )。 此后在程序中就可以通過(guò)該指針訪問(wèn)此動(dòng)態(tài)創(chuàng)建的對(duì)象 。 其聲明格式如下:
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1