首頁 - 網(wǎng)校 - 萬題庫 - 美好明天 - 直播 - 導航
您現(xiàn)在的位置: 考試吧 > 計算機等級考試 > 計算機二級考試 > C加加 > 復習資料 > 正文

計算機二級C++語言程序設計考試輔導筆記(十一)

來源:考試吧 2018-05-11 13:40:27 要考試,上考試吧! 萬題庫
“計算機二級C++語言程序設計考試輔導筆記(十一)”供考生參考。更多計算機等級考試內容請訪問考試吧計算機等級考試網(wǎng)。

  點擊查看:計算機二級C++語言程序設計考試輔導筆記匯總

  構造函數(shù)

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

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

  當一個類的對象進入作用域時,系統(tǒng)會為其數(shù)據(jù)成員分配足夠的內存,但是系統(tǒng)不一定將其初始化。和內部數(shù)據(jù)類型對象一樣,外部對象的數(shù)據(jù)成員總是初始化為0。局部對象不會被初始化。構造函數(shù)就是被用來進行初始化工作的。當自動類型的類對象離開其作用域時,所站用的內存將釋放回系統(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ù),編譯器會自動產生一個公共的默認構造函數(shù),這個構造函數(shù)什么都不做。如果至少提供一個構造函數(shù),則編譯器就不會產生默認構造函數(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ù)將被調用(系統(tǒng)自動調用)。析構函數(shù)的名字和類名一樣,不過要在前面加上 ~ 。對一個類來說,只能允許一個析構函數(shù),析構函數(shù)不能有參數(shù),并且也沒有返回值。析構函數(shù)的作用是完成一個清理工作,如釋放從堆中分配的內存。

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

掃描/長按二維碼幫助考試通關
2018年等考報考資訊
2018等考各科通關技巧
2018各科最新預測試卷
2018等考各科備考資料

微信搜索"考試吧"了解更多考試資訊、下載備考資料

  相關推薦:

  2018年全國計算機等級考試必做試題匯總(各科目)

  2018年全國計算機等級考試復習知識點匯總(各科目)

  2018年全國計算機等級考試時間|教材目錄(2018年版)

  2018全國計算機等級考試備考經驗及應試技巧匯總

  考試內容|考試大綱|2018計算機等級考試科目

  歷年真題匯總|考試吧策劃:2018年計算機等級考試報考指南

0
收藏該文章
0
收藏該文章
文章搜索
萬題庫小程序
萬題庫小程序
·章節(jié)視頻 ·章節(jié)練習
·免費真題 ·模考試題
微信掃碼,立即獲取!
掃碼免費使用
版權聲明:如果計算機等級考試網(wǎng)所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網(wǎng)內容,請注明出處。
Copyright © 2004- 考試吧計算機等級考試網(wǎng) 出版物經營許可證新出發(fā)京批字第直170033號 
京ICP證060677 京ICP備05005269號 中國科學院研究生院權威支持(北京)
在線模擬試題
考證通關殺器
考試最新資訊
一次通關技巧