黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

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

2017年全國計算機二級C++考試復習知識點(2)

來源:考試吧 2017-09-29 9:34:04 要考試,上考試吧! 萬題庫
“2017年全國計算機二級C++考試復習知識點(2)”供考生參考。更多計算機等級考試復習資料等信息請訪問考試吧計算機等級考試網。

  點擊查看:2017年全國計算機二級C++考試復習知識點匯總

  類的設計、構造函數和析構函數

  一、類的設計

  1.類的聲明

  class 類名

  {

  private: //私有

  ...

  public: //公有

  ...

  };

  2.類的成員

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

  3.類成員的可見性

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

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

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

  4.初始化

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

  看下面一個例子:

  #include iostream.h

  class Box

  {

  private:

  int height,width,depth; //3個私有數據成員

  public:

  Box(int,int,int);

  ~Box();

  int volume(); //成員函數

  };

  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成員時,也沒有虛函數,并且不是從其他類中派生出來的,可以用{}來初始化。(以后再講解)

  5.內聯函數

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

  inline int Box::volume()

  {

  return height*width*depth;

  }

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

  #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;

  }

  這樣,兩個函數都默認為內聯函數了。

  二、構造函數

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

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

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

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

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

  1.使用默認參數的構造函數

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

  #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; //使用默認參數

  cout< cout<

  return 0;

  }

  2.默認構造函數

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

  3.重載構造函數

  一個類中可以有多個構造函數。這些構造函數必須具有不同的參數表。在一個類中需要接受不同初始化值時,就需要編寫多個構造函數,但有時候只需要一個不帶初始值的空的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;

  }

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

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

  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;

  }

  };

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

  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;

  }

  };

  三、析構函數

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

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

掃描/長按二維碼幫助考試通關
2017等考成績查詢時間
2017等考各科通關技巧
2017各科最新預測試卷
2017等考成績評定及管理

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

  相關推薦:

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

  2017年9月計算機等級考試真題|算機等級考試答案

  各地2017年9月計算機等考成績查詢時間|免費查分提醒

  計算機等級考試成績評定流程及標準|合格證書樣本及證書說明

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

0
收藏該文章
0
收藏該文章
文章搜索
萬題庫小程序
萬題庫小程序
·章節視頻 ·章節練習
·免費真題 ·模考試題
微信掃碼,立即獲取!
掃碼免費使用
版權聲明:如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。
Copyright © 2004- 考試吧計算機等級考試網 出版物經營許可證新出發京批字第直170033號 
京ICP證060677 京ICP備05005269號 中國科學院研究生院權威支持(北京)
在線模擬試題
考證通關殺器
考試最新資訊
一次通關技巧
主站蜘蛛池模板: 特级淫片aaaa毛片aa视频 | 人与鲁牲交持级毛片 | 日日摸夜夜爽夜夜爽出水 | 日本亚洲天堂网 | 香蕉网站狼人久久五月亭亭 | 在线播放一区二区精品产 | 国产一区二区三区在线观看精品 | 禁止十八成人无限免费观看网站 | 伊色综合久久之综合久久 | 一级黄色免费观看 | 丁香六月综合网 | 一级特黄录像播放 | 欧美人成网 | 91麻豆传传媒波多野衣久久看 | 欧美精品xxxxbbbb | 日本一区二区三区在线看 | 黄色一级片在线观看 | 热re91久久精品国产91热 | 亚州 色 图 综合 | www.一级毛片 | 甜性涩爱在线观看e8 | 波多野衣结在线精品二区 | 亚洲国产系列一区二区三区 | 国产vr一区二区在线观看 | 麻豆精品传媒一二三区在线视频 | 极品精品国产超清自在线观看 | 在线网站黄色 | 成年人免费在线观看网站 | 国产亚洲女在线精品 | 亚洲国产综合精品 | 日韩福利片午夜在线观看资源 | 欧美午夜久久 | aⅴ天堂网 | 久久毛片免费看一区二区三区 | 国产99视频精品免费视频7 | 九九99| free性中国hd护士高清 | 日本a视频 | 亚洲欧美人成综合在线最新 | 久久国产精品-国产精品 | 一本色道久久综合狠狠躁 |