正在閱讀:C++面向?qū)ο缶幊倘腴T(mén):構(gòu)造函數(shù)與析構(gòu)函數(shù)C++面向?qū)ο缶幊倘腴T(mén):構(gòu)造函數(shù)與析構(gòu)函數(shù)

2005-03-08 15:56 出處:PConline 作者:管寧 責(zé)任編輯:xietaoming

  請(qǐng)注意,這一節(jié)內(nèi)容是c++的重點(diǎn),要特別注意!

  我們先說(shuō)一下什么是構(gòu)造函數(shù)。

  上一個(gè)教程我們簡(jiǎn)單說(shuō)了關(guān)于類的一些基本內(nèi)容,對(duì)于類對(duì)象成員的初始化我們始終是建立成員函數(shù)然后手工調(diào)用該函數(shù)對(duì)成員進(jìn)行賦值的,那么在c++中對(duì)于類來(lái)說(shuō)有沒(méi)有更方便的方式能夠在對(duì)象創(chuàng)建的時(shí)候就自動(dòng)初始化成員變量呢,這一點(diǎn)對(duì)操作保護(hù)成員是至關(guān)重要的,答案是肯定的。關(guān)于c++類成員的初始化,有專門(mén)的構(gòu)造函數(shù)來(lái)進(jìn)行自動(dòng)操作而無(wú)需要手工調(diào)用,在正式講解之前先看看c++對(duì)構(gòu)造函數(shù)的一個(gè)基本定義。   1.C++規(guī)定,每個(gè)類必須有默認(rèn)的構(gòu)造函數(shù),沒(méi)有構(gòu)造函數(shù)就不能創(chuàng)建對(duì)象。

  2.若沒(méi)有提供任何構(gòu)造函數(shù),那么c++提供自動(dòng)提供一個(gè)默認(rèn)的構(gòu)造函數(shù),該默認(rèn)構(gòu)造函數(shù)是一個(gè)沒(méi)有參數(shù)的構(gòu)造函數(shù),它僅僅負(fù)責(zé)創(chuàng)建對(duì)象而不做任何賦值操作。

  3.只要類中提供了任意一個(gè)構(gòu)造函數(shù),那么c++就不在自動(dòng)提供默認(rèn)構(gòu)造函數(shù)。

  4.類對(duì)象的定義和變量的定義類似,使用默認(rèn)構(gòu)造函數(shù)創(chuàng)建對(duì)象的時(shí)候,如果創(chuàng)建的是靜態(tài)或者是全局對(duì)象,則對(duì)象的位模式全部為0,否則將會(huì)是隨即的。

  我們來(lái)看下面的代碼:

#include <iostream
using namespace std;   
class Student 

    public
    Student()//無(wú)參數(shù)構(gòu)造函數(shù) 
    { 
        number = 1; 
        score = 100; 
    } 
    void show(); 
 
    protected
    int number; 
    int score; 
 
}; 
 
void Student::show() 

    cout<<number<<endl<<score<<endl; 

 
void main() 

    Student a; 
    a.show(); 
    cin.get(); 
}

  在類中的定義的和類名相同,并且沒(méi)有任何返回類型的Student()就是構(gòu)造函數(shù),這是一個(gè)無(wú)參數(shù)的構(gòu)造函數(shù),他在對(duì)象創(chuàng)建的時(shí)候自動(dòng)調(diào)用,如果去掉Student()函數(shù)體內(nèi)的代碼那么它和c++的默認(rèn)提供的構(gòu)造函數(shù)等價(jià)的。

  構(gòu)造函數(shù)可以帶任意多個(gè)的形式參數(shù),這一點(diǎn)和普通函數(shù)的特性是一樣的!

鍵盤(pán)也能翻頁(yè),試試“← →”鍵
302 Found

302 Found


Powered by Tengine
tengine