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

正文內(nèi)容

第7章類和對象-展示頁

2024-11-05 15:03本頁面
  

【正文】 函數(shù)調(diào)用結(jié)束時(shí) , 系統(tǒng)自動(dòng)調(diào)用該對象的析構(gòu)函數(shù)釋放該對象;其二 , 當(dāng)一個(gè)對象是用 new運(yùn)算符動(dòng)態(tài)創(chuàng)建的 , 則在使用 delete運(yùn)算符釋放它時(shí)自動(dòng)調(diào)用析構(gòu)函數(shù) 。 [3] 一個(gè)類中只能有一個(gè)析構(gòu)函數(shù) , 這一點(diǎn)與構(gòu)造函數(shù)不同 。 析構(gòu)函數(shù)有以下一些特性: [1] 函數(shù)的名字與類名相同 , 并在前面加一個(gè) “ ~ ”字符 , 用來與構(gòu)造函數(shù)相區(qū)別 。 } … }; 析構(gòu)函數(shù) 析構(gòu)函數(shù)也是一種特殊的成員函數(shù) ,其功能與構(gòu)造函數(shù)的功能正好相反 , 用來釋放一個(gè)對象 。 構(gòu)造函數(shù)可以采用初始化列表的形式對數(shù)據(jù)成員賦初值: 例如: class Point{ double x , y 。 注意:不能用以下方式創(chuàng)建 A類對象 A a1()。 這里類A的構(gòu)造函數(shù)沒有帶參數(shù) , 在程序中可以采用如下方式創(chuàng)建類A的對象: A a1。 cout” initialized … ”endl 。 //類成員函數(shù)調(diào)用 } 程序運(yùn)行結(jié)果: 4:40:20 例 一個(gè)定義了構(gòu)造函數(shù)時(shí)鐘類 可以為一個(gè)類定義一個(gè)不帶參數(shù)的構(gòu)造函數(shù): class A { int a 。 void main() { Clock aClock(100,100,200)。 } void print(){ couthour”:”minute”:”secondendl。 if (h=24) hour=h%24。 else minute=m。 if(m0) minute=0。 if (s=60) second =s%60。 構(gòu)造函數(shù)和析構(gòu)函數(shù) 構(gòu)造函數(shù) class Clock { int hour, minute, second。 ( 3) 可以為一個(gè)類定義多個(gè)構(gòu)造函數(shù) , 它們以參數(shù)個(gè)數(shù)不同來區(qū)分 。 有隱含的返回值 , 該值由系統(tǒng)內(nèi)部使用 。 構(gòu)造函數(shù)可以有一個(gè)或多個(gè)任意類型的參數(shù) 。 ( 3) 設(shè)置成員函數(shù)參數(shù)的缺省值 構(gòu)造函數(shù)是一種特殊的成員函數(shù) , 其功能是在創(chuàng)建對象時(shí) , 使用給定的值對對象進(jìn)行初始化 。 Y = y 。 普通函數(shù)可以帶缺省形參值 , 類的成員函數(shù)的形參也可以設(shè)置缺省值 , 其定義方法和調(diào)用規(guī)則與普通函數(shù)相同 。 return sqrt(t)。 } double GetMagnitude ( ) { double t 。 } double GetReal ( ) { return real 。 public: void SetRealImage (double r , double i ) { real = r 。 class Complex{ double real 。第二種方式是將成員函數(shù)定義在類體內(nèi),即定義為內(nèi)聯(lián)函數(shù)。 ( 2) 成員函數(shù)定義為內(nèi)聯(lián)函數(shù) 成員函數(shù)的定義通常采用兩種方式。在許多情況下內(nèi)聯(lián)函數(shù)是隱式定義的。 在程序中通常對重復(fù)調(diào)用次數(shù)多且代碼較短的函數(shù)定義為內(nèi)聯(lián)函數(shù) 。 ( 1) 內(nèi)聯(lián)函數(shù) 內(nèi)聯(lián)函數(shù)是特殊的 C++函數(shù) , 類似于宏指令 , 它直接在調(diào)用處插入函數(shù)體中的代碼 , 而不進(jìn)行一般函數(shù)的調(diào)用操作 。 成員函數(shù)的定義 類的成員函數(shù),又稱類方法,用來描述類的行為,是對封裝的數(shù)據(jù)進(jìn)行操作的唯一途徑。 public: ┆ }。 但應(yīng)注意: a. 類自身的對象不能作為類的成員; b. 指向類自身的對象指針或引用可以作為類的成員 。例如整型、浮點(diǎn)型、字符型、數(shù)組、指針和引用等, 但不能用自動(dòng)( auto)、寄存器( register)或外部的( extern)進(jìn)行說明。 如果把所有的私有成員放在公有成員前面 , 可以自動(dòng)獲得缺省訪問控制權(quán)限 private。} 類實(shí)現(xiàn)部分: 類說明部分: 定 義類 時(shí)說 明部 分中 的關(guān) 鍵字 public 、 private 、protected從它們出現(xiàn)的位置起開始生效 , 直到出現(xiàn)另一個(gè)訪問權(quán)限關(guān)鍵字為止 。} double Point :: GetY ( ) //定義成員函數(shù) GetY ( ) { return y 。 y = b。 void Print ( ) 。 3.類封裝和數(shù)據(jù)隱藏 例: 點(diǎn)類Point的定義 class Point{ private: double x , y ; public: void SetPoint(double x , double y) 。 private權(quán)限為類帶來了封裝性 , 它使私有成員隱藏起來 , 不能從類的外部對它們進(jìn)行訪問 , 或者說它們從類外部是不可見的 , 只有類自己的成員函數(shù)才可以訪問它們。 在 C++中, 類的成員從訪問權(quán)限上分為私有 ( private) 、公有 ( public) 和保護(hù) ( protected) 三類 。“ :: ” 稱為作用域運(yùn)算符 。 1.類說明部分 類說明部分一般格式如下: class 類名 { private:(或缺省時(shí) ) 數(shù)據(jù)成員聲明或函數(shù)成員的原型; protected: 數(shù)據(jù)成員聲明或函數(shù)成員的原型; public: 數(shù)據(jù)成員聲明或函數(shù)成員的原型; }; 2.類實(shí)現(xiàn)部分 類的實(shí)現(xiàn)部分 , 包括所有在類體中說明的成員函數(shù)的定義 。 類實(shí)現(xiàn)部分 用來對成員函數(shù)進(jìn)行定義 。 類的成員包括數(shù)據(jù)成員和函數(shù)成員 。第 7章 類和對象 類的定義 類定義格式 類的定義分為說明和實(shí)現(xiàn)兩個(gè)部分 。 類說明部分 是用來聲明該類中的成員 。 其中 , 函數(shù)成員又稱成員函數(shù)或 “ 方法 ” , 用于對數(shù)據(jù)成員進(jìn)行各種操作 。 即說明部分告訴類要 “ 干什么 ” , 實(shí)現(xiàn)部分告訴類 “ 怎么干 ” 。 成員函數(shù)的定義通常在類定義體之外給出 ,其中每個(gè)成員函數(shù)定義格式為: 返回值類型 類名::成員函數(shù)名 ( 參數(shù)表 ) { … //函數(shù)體 } 類的成員函數(shù)在類外部定義時(shí) , 前面必須加上 “ 類名:: ” , 以說明所定義的函數(shù)是哪一個(gè)類的成員 。 封裝性來自對類成員的訪問控制權(quán)限 。 私有成員通常是一些數(shù)據(jù)成員 。 公有成員往往是一些操作 ( 即成員函數(shù) ) , 可在程序中類的外部訪問它們 , 它們是類的對外接口 。 double GetX ( ) ; double GetY ( ) 。 }; void Point :: SetPoint (double a , double b) //定義成員函數(shù) SetPoint( ) { x = a 。 } double Point :: GetX ( ) //定義成員函數(shù) GetX ( ) { return x 。} void Point :: Print( ) //定義成員函數(shù) Print( ) { cout”X=” x ”,” “Y=” y endl 。 訪問權(quán)限關(guān)鍵字可以按任意順序出現(xiàn)任意次 , 但是 , 如果把所有的私有成員和公有成員歸類放在一起 , 能增強(qiáng)程序的可讀性 。 類中的數(shù)據(jù)成員可以是任何數(shù)據(jù)類型。 類的數(shù)據(jù)成員也可以是其它類的對象 。 不能在類的說明部分給類的數(shù)據(jù)成員賦初值 , 例如在點(diǎn)類的定義中 , 下面的定義是錯(cuò)的: Class Point{ int x=0 , y=0。 一般習(xí)慣性地將類定義的說明部分或者整個(gè)定義部分 ( 包括實(shí)現(xiàn)部分 ) 放到一個(gè)頭文件中 , 例如 , 將前面定義的點(diǎn)類 Point的定義部分放在 。 本質(zhì)上,成員函數(shù)是程序算法的實(shí)現(xiàn)載體。 引入內(nèi)聯(lián)函數(shù) , 既能得到宏指令代碼重用 、 不增加時(shí)間開銷的優(yōu)點(diǎn) , 又能避免宏指令的變元替換可能引起的副作用 。 內(nèi)聯(lián)函數(shù)用關(guān)鍵字 inline說明 , 一般格式為: inline 返回值類型 函數(shù)名 ( 〈 參數(shù)表 〉 ) 用關(guān)鍵字 inline說明的內(nèi)聯(lián)函數(shù)稱為顯式定義的內(nèi)聯(lián)函數(shù)。如在一個(gè)類定義體中定義的成員函數(shù),自動(dòng)成為內(nèi)聯(lián)函數(shù),不須用 inline說明。第一種方式是在類定義的說明部分只給出成員函數(shù)的原型,成員函數(shù)體在類的外部,即類的實(shí)現(xiàn)部分定義。 例:定義一個(gè)復(fù)數(shù)類,所有成員函數(shù)都在類體中定義。 double image 。 image = i 。 } double GetImage( ) { return image 。 t = real * real + image * image 。 } } 。 例如點(diǎn)類的 SetPoint( ) 函數(shù)設(shè)置形參缺省值如下: void Point :: SetPoint (int x=0 , int y=0 ) { X = x 。 } 如果調(diào)用這個(gè)成員函數(shù)時(shí)不給出實(shí)參,就可以把點(diǎn)設(shè)置為坐標(biāo)原點(diǎn)。 構(gòu)造函數(shù)的特殊性質(zhì): ( 1) 構(gòu)造函數(shù)與類同名 , 其訪問控制屬性為 public。 ( 2) 構(gòu)造函數(shù)是特殊的內(nèi)聯(lián)函數(shù) 。 用戶不指定構(gòu)造函數(shù)的返回值類型 , 甚至說明為 void類型也不行 。 ( 4) 程序中不能直接調(diào)用構(gòu)造函數(shù) , 構(gòu)造函數(shù)是在創(chuàng)建對象時(shí)由系統(tǒng)自動(dòng)調(diào)用的 。 public: Clock(int h, int m, int s) //構(gòu)造函數(shù)定義 { if(s0) second=0。 else second=s。 if (m=60) minute =m%60。 if(h0) hour=0。 else hour=h。 } }。 //創(chuàng)建一個(gè) Clock類的對象 aClock ()。 public: A ( ) { a =10 。 } … }。 在定義對象 a1的同時(shí)類A的構(gòu)造函數(shù)自動(dòng)地被系統(tǒng)調(diào)用執(zhí)行 , 給私有數(shù)據(jù)成員 a 賦初值 10。 編譯系統(tǒng)將把它看作一個(gè)函數(shù)名為 a1, 返回值類型為 A, 沒有參數(shù)的函數(shù)原型語句 。 public: Point (double a , double b) : x (a) , y (b) { cout “Constructer called . “endl 。 在對象刪除前 , 用它來做一些清理工作 , 如釋放分配對對象的內(nèi)存空間等 。 [2] 析構(gòu)函數(shù)沒有參數(shù) , 不能指定類型說明 。 [4] 析構(gòu)函數(shù)可以在程序中顯式調(diào)用 , 也可由系統(tǒng)自動(dòng)調(diào)用 。 例 析構(gòu)函數(shù)調(diào)用測試 include include class Point{ double x , y。 y = b 。 } ~Point ( ) { cout The destructor is called.endl 。} double GetY ( ) {return y 。} }。 Point p1(, ), p2 ( , )。 ( )。 b = ( ) ( ) 。 coutThe distance between point1 and point2 is :cendl 。如果在類定義時(shí)沒有定義任何構(gòu)造函數(shù),則編譯系統(tǒng)自動(dòng)生成一個(gè)不帶參數(shù)的 缺省構(gòu)造函數(shù) , 例如:編譯系統(tǒng)為 Complex類生成下
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1