在线现看午夜福利片|女人16久久免费视频|鲁丝片一区鲁丝片二区鲁丝|一区二区三区欧美在线

  1. 
    
    <b id="glvx9"></b>
        1. <blockquote id="glvx9"><meter id="glvx9"></meter></blockquote>
            首頁 - 網(wǎng)校 - 萬題庫 - 美好明天 - 直播 - 導(dǎo)航
            您現(xiàn)在的位置: 考試吧 > 計算機等級考試 > 計算機二級考試 > C加加 > 復(fù)習(xí)資料 > 正文

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

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

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

              類的設(shè)計、構(gòu)造函數(shù)和析構(gòu)函數(shù)

              一、類的設(shè)計

              1.類的聲明

              class 類名

              {

              private: //私有

              ...

              public: //公有

              ...

              };

              2.類的成員

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

              3.類成員的可見性

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

              類中默認(rèn)的數(shù)據(jù)類型是private,結(jié)構(gòu)中的默認(rèn)類型是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;

              }

              當(dāng)一個類中沒有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ù)時使用關(guān)鍵字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ù)都默認(rèn)為內(nèi)聯(lián)函數(shù)了。

              二、構(gòu)造函數(shù)

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

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

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

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

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

              1.使用默認(rèn)參數(shù)的構(gòu)造函數(shù)

              當(dāng)在聲明類對象時,如果沒有指定參數(shù),則使用默認(rèn)參數(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; //使用默認(rèn)參數(shù)

              cout< cout<

              return 0;

              }

              2.默認(rèn)構(gòu)造函數(shù)

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

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

              一個類中可以有多個構(gòu)造函數(shù)。這些構(gòu)造函數(shù)必須具有不同的參數(shù)表。在一個類中需要接受不同初始化值時,就需要編寫多個構(gòu)造函數(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;

              }

              這兩個構(gòu)造函數(shù)一個沒有初始化值,一個有。當(dāng)沒有初始化值時,程序使用默認(rèn)值,即2,3,4。

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

              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;

              }

              };

              這還不是最好的方法,更好的方法是使用默認(rèn)參數(shù),根本不需要不帶參數(shù)的構(gòu)造函數(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;

              }

              };

              三、析構(gòu)函數(shù)

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

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

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

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

              相關(guān)推薦:

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

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

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

              計算機等級考試成績評定流程及標(biāo)準(zhǔn)|合格證書樣本及證書說明

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

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