close

< C++完整教學目錄 >

 

 

若在建立類別時,欲讓所有該類別物件共享一個變數(意思是說,這個變數在所有該類別物件裡的值都一樣,若經更改,則此變數的值在所有該類別物件中也都更改。這種變數稱為靜態變數),可以使用:

static 變數型態 變數名稱;

(a) 注意:若要讓類別擁有靜態變數(靜態類別成員)則類別應該宣告在主程式之外。若要宣告靜態變數之初始值,也要在主程式之外宣告。如下:

class classA //在主程式外宣告類別classA

{    

public:

int a;

classA()  // 建構式在此

{a=5;obj_number++;}

static void print_obj_number()

{cout<<obj_number<<endl;}  //使用static定義靜態成員函式,專門用來處理靜態類別成員   

private:

static int obj_number;  //使用static定義靜態類別成員,也就是靜態變數

};

int classA::obj_number=0;  //使用 變數型態::靜態類別成員名稱= 來對靜態類別成員進行初始化。這一行也要打在主程式之外。

int main() // 主程式在此

{     

classA A1;

A1.print_obj_number();  //顯示1

classA A2;

A1.print_obj_number();  //顯示2

A2.print_obj_number();  //顯示2

classA A3;

A1.print_obj_number();  //顯示3

A2.print_obj_number();  //顯示3

A3.print_obj_number();  //顯示3

}

註一:若沒有對靜態類別成員進行初始化,C++會自動將其初始化為0

註二:靜態成員函式只能處理靜態類別成員,無法處理非靜態的成員。

註三:常數成員函式可以修改靜態類別成員。但靜態成員函式無法被定義成常數成員函式。

(b)類別中可以定義「靜態常數類別成員」,則對所有以此類別建立的物件而言,此成員的值都一樣,且不能更改。如:

class classA

{

private:

static const int a; //定義靜態常數類別成員

}; 

const int classA::a=5;

void mian(){

}

 

 

上一篇:類別(class) mutable

下一篇:類別(class) friend的用法

arrow
arrow
    創作者介紹
    創作者 埃伯 的頭像
    埃伯

    程式語言教學

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