首頁 - 網(wǎng)校 - 萬題庫 - 直播 - 雄鷹網(wǎng)校 - 團購 - 書城 - 模考 - 學習通 - 導航 -
首頁網(wǎng)校萬題庫直播雄鷹網(wǎng)校團購書城?論壇實用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓
專升本
自學考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托?荚
托業(yè)考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認證
水平考試
Java認證
職稱計算機 微軟認證 思科認證 Oracle認證 Linux認證
公 務 員
導游考試
物 流 師
出版資格
單 證 員
報 關 員
外 銷 員
價格鑒證
網(wǎng)絡編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業(yè)培訓
社會工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務
期貨考試
國際商務
心理咨詢
營 銷 師
司法考試
國際貨運代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護士
會計從業(yè)資格
基金從業(yè)資格
統(tǒng)計從業(yè)資格
經(jīng)濟師
精算師
統(tǒng)計師
會計職稱
法律顧問
ACCA考試
初級會計職稱
資產(chǎn)評估師
高級經(jīng)濟師
注冊會計師
高級會計師
美國注冊會計師
審計師考試
國際內(nèi)審師
注冊稅務師
理財規(guī)劃師
一級建造師
安全工程師
設備監(jiān)理師
公路監(jiān)理師
公路造價師
二級建造師
招標師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
注冊給排水
造價員考試
注冊計量師
環(huán)保工程師
化工工程師
暖通工程師
咨詢工程師
結構工程師
城市規(guī)劃師
材料員考試
消防工程師
監(jiān)理工程師
房地產(chǎn)估價
土地估價師
安全評價師
房地產(chǎn)經(jīng)紀人
投資項目管理師
環(huán)境影響評價師
土地登記代理人
寶寶起名
繽紛校園
實用文檔
入黨申請
英語學習
思想?yún)R報
作文大全
工作總結
求職招聘 論文下載 直播課堂
您現(xiàn)在的位置: 考試吧 > 計算機等級考試 > 計算機二級考試 > C加加 > 復習資料 > 正文

2016年計算機二級《C++》復習資料:類的設計等

來源:考試吧 2015-12-15 9:15:34 考試吧:中國教育培訓第一門戶 模擬考場
考試吧整理“2016年計算機二級《C++》復習資料:類的設計等”供考生參考。更多計算機等級考試相關信息請關注考試吧計算機等級考試網(wǎng)。

  點擊查看:2016年計算機二級考試《C++》復習資料匯總  

類的設計、構造函數(shù)和析構函數(shù)

  一、類的設計

  1.類的聲明

  class 類名

  {

  private: //私有

  ...

  public: //公有

  ...

  };

  2.類的成員

  一般在C++類中,所有定義的變量和函數(shù)都是類的成員。如果是變量,我們就叫它數(shù)據(jù)成員如果是函數(shù),我們就叫它成員函數(shù)。

  3.類成員的可見性

  private和public訪問控制符決定了成員的可見性。由一個訪問控制符設定的可訪問狀態(tài)將一直持續(xù)到下一個訪問控制符出現(xiàn),或者類聲明的結束。私有成員僅能被同一個類中的成員函數(shù)訪問,公有成員既可以被同一類中的成員函數(shù)訪問,也可以被其他已經(jīng)實例化的類中函數(shù)訪問。當然,這也有例外的情況,這是以后要討論的友元函數(shù)。

  類中默認的數(shù)據(jù)類型是private,結構中的默認類型是public。一般情況下,變量都作為私有成員出現(xiàn),函數(shù)都作為公有成員出現(xiàn)。

  類中還有一種訪問控制符protected,叫保護成員,以后再說明。

  4.初始化

  在聲明一個類的對象時,可以用圓括號()包含一個初始化表。

  看下面一個例子:

  #include iostream.h

  class Box

  {

  private:

  int height,width,depth; //3個私有數(shù)據(jù)成員

  public:

  Box(int,int,int);

  ~Box();

  int volume(); //成員函數(shù)

  };

  Box::Box(int ht,int wd,int dp)

  {

  height=ht;

  width=wd;

  depth=dp;

  }

  Box::~Box()

  {

  //nothing

  }

  int Box::volume()

  {

  return height*width*depth;

  }

  int main()

  {

  Box thisbox(3,4,5); //聲明一個類對象并初始化

  cout< return 0;

  }

  當一個類中沒有private成員和protected成員時,也沒有虛函數(shù),并且不是從其他類中派生出來的,可以用{}來初始化。(以后再講解)

  5.內(nèi)聯(lián)函數(shù)

  內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別是:內(nèi)聯(lián)函數(shù)是在編譯過程中展開的。通常內(nèi)聯(lián)函數(shù)必須簡短。定義類的內(nèi)聯(lián)函數(shù)有兩種方法:一種和C語言一樣,在定義函數(shù)時使用關鍵字inline。如:

  inline int Box::volume()

  {

  return height*width*depth;

  }

  還有一種方法就是直接在類聲明的內(nèi)部定義函數(shù)體,而不是僅僅給出一個函數(shù)原型。我們把上面的函數(shù)簡化一下:

  #include iostream.h

  class Box

  {

  private:

  int height,width,depth;

  public:

  Box(int ht,int wd,int dp)

  {

  height=ht;

  width=wd;

  depth=dp;

  }

  ~Box();

  int volume()

  {

  return height*width*depth;

  }

  };

  int main()

  {

  Box thisbox(3,4,5); //聲明一個類對象并初始化

  cout< return 0;

  }

  這樣,兩個函數(shù)都默認為內(nèi)聯(lián)函數(shù)了。

  二、構造函數(shù)

  什么是構造函數(shù)?通俗的講,在類中,函數(shù)名和類名相同的函數(shù)稱為構造函數(shù)。上面的Box()函數(shù)就是構造函數(shù)。C++允許同名函數(shù),也就允許在一個類中有多個構造函數(shù)。如果一個都沒有,編譯器將為該類產(chǎn)生一個默認的構造函數(shù),這個構造函數(shù)可能會完成一些工作,也可能什么都不做。

  絕對不能指定構造函數(shù)的類型,即使是void型都不可以。實際上構造函數(shù)默認為void型。

  當一個類的對象進入作用域時,系統(tǒng)會為其數(shù)據(jù)成員分配足夠的內(nèi)存,但是系統(tǒng)不一定將其初始化。和內(nèi)部數(shù)據(jù)類型對象一樣,外部對象的數(shù)據(jù)成員總是初始化為0。局部對象不會被初始化。構造函數(shù)就是被用來進行初始化工作的。當自動類型的類對象離開其作用域時,所站用的內(nèi)存將釋放回系統(tǒng)。

  看上面的例子,構造函數(shù)Box()函數(shù)接受三個整型擦黑素,并把他們賦值給立方體對象的數(shù)據(jù)成員。

  如果構造函數(shù)沒有參數(shù),那么聲明對象時也不需要括號。

  1.使用默認參數(shù)的構造函數(shù)

  當在聲明類對象時,如果沒有指定參數(shù),則使用默認參數(shù)來初始化對象。

  #include iostream.h

  class Box

  {

  private:

  int height,width,depth;

  public:

  Box(int ht=2,int wd=3,int dp=4)

  {

  height=ht;

  width=wd;

  depth=dp;

  }

  ~Box();

  int volume()

  {

  return height*width*depth;

  }

  };

  int main()

  {

  Box thisbox(3,4,5); //初始化

  Box defaulbox; //使用默認參數(shù)

  cout< cout<

  return 0;

  }

  2.默認構造函數(shù)

  沒有參數(shù)或者參數(shù)都是默認值的構造函數(shù)稱為默認構造函數(shù)。如果你不提供構造函數(shù),編譯器會自動產(chǎn)生一個公共的默認構造函數(shù),這個構造函數(shù)什么都不做。如果至少提供一個構造函數(shù),則編譯器就不會產(chǎn)生默認構造函數(shù)。

  3.重載構造函數(shù)

  一個類中可以有多個構造函數(shù)。這些構造函數(shù)必須具有不同的參數(shù)表。在一個類中需要接受不同初始化值時,就需要編寫多個構造函數(shù),但有時候只需要一個不帶初始值的空的Box對象。

  #include iostream.h

  class Box

  {

  private:

  int height,width,depth;

  public:

  Box() { //nothing }

  Box(int ht=2,int wd=3,int dp=4)

  {

  height=ht;

  width=wd;

  depth=dp;

  }

  ~Box();

  int volume()

  {

  return height*width*depth;

  }

  };

  int main()

  {

  Box thisbox(3,4,5); //初始化

  Box otherbox;

  otherbox=thisbox;

  cout< return 0;

  }

  這兩個構造函數(shù)一個沒有初始化值,一個有。當沒有初始化值時,程序使用默認值,即2,3,4。

  但是這樣的程序是不好的。它允許使用初始化過的和沒有初始化過的Box對象,但它沒有考慮當thisbox給otherbox賦值失敗后,volume()該返回什么。較好的方法是,沒有參數(shù)表的構造函數(shù)也把默認值賦值給對象。

  class Box

  {

  int height,width,depth;

  public:

  Box()

  {

  height=0;width=0;depth=0;

  }

  Box(int ht,int wd,int dp)

  {

  height=ht;width=wd;depth=dp;

  }

  int volume()

  {

  return height*width*depth;

  }

  };

  這還不是最好的方法,更好的方法是使用默認參數(shù),根本不需要不帶參數(shù)的構造函數(shù)。

  class Box

  {

  int height,width,depth;

  public:

  Box(int ht=0,int wd=0,int dp=0)

  {

  height=ht;width=wd;depth=dp;

  }

  int volume()

  {

  return height*width*depth;

  }

  };

  三、析構函數(shù)

  當一個類的對象離開作用域時,析構函數(shù)將被調(diào)用(系統(tǒng)自動調(diào)用)。析構函數(shù)的名字和類名一樣,不過要在前面加上 ~ 。對一個類來說,只能允許一個析構函數(shù),析構函數(shù)不能有參數(shù),并且也沒有返回值。析構函數(shù)的作用是完成一個清理工作,如釋放從堆中分配的內(nèi)存。

  我們也可以只給出析構函數(shù)的形式,而不給出起具體函數(shù)體,其效果是一樣的,如上面的例子。但在有些情況下,析構函數(shù)又是必需的。如在類中從堆中分配了內(nèi)存,則必須在析構函數(shù)中釋放。

  相關推薦:

  各地2016年全國計算機等級考試報名時間匯總

  各地2016年全國計算機等級考試費用匯總

  2016年計算機等級考試各級別報考適合專業(yè)類別

  考試吧特別策劃:2016年計算機等級考試報考指南

文章搜索
版權聲明:如果計算機等級考試網(wǎng)所轉載內(nèi)容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網(wǎng)內(nèi)容,請注明出處。
Copyright © 2004- 考試吧計算機等級考試網(wǎng) All Rights Reserved 
中國科學院研究生院權威支持(北京)
在線模擬試題
考證通關殺器
考試最新資訊
一次通關技巧