靜態成員初始化

來源:互聯網
上載者:User

1,對於非待用資料成員,每個類對象都有自己的拷貝,而待用資料成員對每個類類型只有一個拷貝。由於待用資料成員分配在全域資料區,因此在程式開始運行時就必須存在,故待用資料成員的空間分配和初始化不可能在main函數或其他函數中完成(因而在局部類中也不允許出現待用資料成員)。這樣一來,待用資料成員的空間分配和初始化只可能有以下三種途徑:(a)類的標頭檔:這裡有類的聲明。但存在一個無法迴避的問題:對於待用資料成員,在程式中也只能存在一個定義,而類的標頭檔可能被重複引用而出現重複定義;(b)main函數前的全域資料聲明和定義處:這種方法也有問題,每一個使用該類的程式都必須在此處定義一下該類的靜態成員,這是不現實的;(c)類定義的內部實現:這是最為理想的方式,引用時只需包含標頭檔即可。

2,簡單變數初始化

#include <string>
class Account {
// ...

private:
static const string name;
};
const string Account::name( "Savings Account" );

3,一維數組初始化

class mydlg
{
  static mychilddlg *dlgs[3];
}

static mychilddlg* mydlg::dlgs[3]={ 0 , 0 , 0 };

4,二維數組初始化

方法一:  
  在類裡定義一個靜態函數,用來初始化這個數組.在程式的初始化代碼裡調用這函數進行初始化   

方法二:  
  寫一個類來封裝這個數組,類可以有建構函式,在建構函式裡初始化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.