close

< C++完整教學目錄 >

 

 

3. 類別的建構式建構子constructor),形式和函式有點像(不過不需要回傳型別)建構式名稱需要和類別名稱相同。是在建立類別物件時,用來進行類別物件成員初始化的工具,可以在類別的public區域內設定建構式。且建構式可以對類別內任何區域的成員進行初始化。

class classA

{

public:

int a;

classA(int a_, int b_, int c_){a=a_;b=b_;c=c_;}  //設定此類別第一個建構式

classA(){a=5;b=10;c=15;}                  //設定此類別第二個建構式

void printvalue()

{cout<<a<<","<<b<<","<<c<<"."<<endl;}  //設定輸出所有類別成員的函

protected:

int b;

private:

int c;

} ;

classA A1(1,2,3);  //利用第一個建構式建立類別物件,並為類別物件成員設初始值。

classA A2;   //利用第二個建構式建立類別物件,並為類別物件成員設初始值。

A1.printvalue();  //顯示 1,2,3.

A2.printvalue();  //顯示 5,10,15

註一:類別建構式不一定要對所有類別物件成員進行初始化,只對其中一、兩個類別物件成員進行初始化也可以,沒有被進行初始化的類別物件成員便沒有值,或是也可以其他函式進行初始化。

註二:若程式設計者在一個類別沒有設定任何類別建構式,則C++會自動為該類別建立一個建構式(式碼中看不到),相當於 類別名稱(){},利用此建構式建立物件時,不會對類別物件成員進行任何初始化,如(2)中的classA A。稱為備用建構式」。

註三:利用建構式建立類別物件時,也可以使用「動態空間建構方式」,也就是使用指標pointer)來建構,程式碼如:

類別名稱* 類別物件名稱 = new 類別建構式

舉例:

classA *A1 =new classA (1,2,3);

classA *A2 =new classA;

不過這麼一來,若要呼叫類別物件成員函式就無法用:

類別物件名稱.類別物件成員函式名稱(參數1,參數2)

而要用:

類別物件名稱->類別物件成員函式名稱(參數1,參數2)

舉例:

A1->printvalue();

A2->printvalue();

 

 

上一篇:類別(class)簡介

下一篇:類別(class)嵌入

arrow
arrow

    埃伯 發表在 痞客邦 留言(0) 人氣()