線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1228
推到 Plurk!
推到 Facebook!

class「靜態資料成員」的使用

答題得分者是:Stallion
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-19 07:53:21 IP:59.104.xxx.xxx 未訂閱
    #include 
#include 
using namespace std;
class CWin    // 定義視窗類別CWin
{
   private:
     char id;
     int width, height;
     static int num;    // 將靜態資料成員宣告為private
     
   public:     
     CWin(char i,int w,int h):id(i),width(w),height(h)  
     {
        num  ;    // 將靜態資料成員的值加1
     }
     CWin()
     {
        num  ;    // 將靜態資料成員的值加1
     }
     void count(void)   // 函數成員,可讀取private靜態資料成員
     {
        cout<<"已建立 "<< num <<" 個物件了..."<< endl;
     }
};    int CWin::num=0;   // 設定靜態資料成員num的初值    int main(void)
{
   CWin win1('A',50,40);         
   CWin win2('B',60,80);
   win1.count();     // 以win1物件呼叫count       CWin my_win[4];
   win2.count();     // 也可用win2物件呼叫count
     
   system("pause");
   return 0;
}
搞不懂為什麼 int CWin::num=0; //這樣不是在class外部嗎?? num不是在class中為private必須透過函式成員初始化嗎?? 懂得朋友可以答覆我這問題嗎?? 謝謝
windblown
中階會員


發表:0
回覆:117
積分:98
註冊:2003-11-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-19 17:18:27 IP:61.229.xxx.xxx 未訂閱
static data member 是 class 級的變數,只有一份,也因此放在「函式成員初始化」是不合理的 而「函式成員初始化」是針對一般 data member 初始化 所以 static data member 必須像 member function 一樣的宣告模式(member function 也只有一份)
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-19 19:49:59 IP:211.22.xxx.xxx 未訂閱
引言: static data member 是 class 級的變數,只有一份,也因此放在「函式成員初始化」是不合理的 而「函式成員初始化」是針對一般 data member 初始化 所以 static data member 必須像 member function 一樣的宣告模式(member function 也只有一份)
嗯~補充一下! 類別中帶有 > ----------------------------------------------
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-20 20:44:24 IP:203.70.xxx.xxx 未訂閱
抱歉我突然又想到一個問題 我用編譯器測試一下還是發現有問題 int CWin::num=0; //在mian()中設定初始值為什麼不可?? 謝謝
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-20 21:11:35 IP:211.22.xxx.xxx 未訂閱
引言: int CWin::num=0; //在mian()中設定初始值為什麼不可??
類別變數是程式一開始就存在,因此屬於全域(GLOBAL),不可放在函數中宣告,函數中的變數是進入函數後才向堆疊要空間存放,離開函數後就消失~瞭解乎?! ---------------------------------------------- We will either find a way, or make one. -Hannibal -。 發表人 - stallion 於 2005/09/20 21:12:38
syao
初階會員


發表:66
回覆:63
積分:25
註冊:2005-02-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-20 21:44:23 IP:203.70.xxx.xxx 未訂閱
了解^^
系統時間:2024-05-18 5:13:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!