因為業務背景需要,需要做以下需求:
1, 定義乙個屬於「類」的成員變數,即所有物件都可以訪問這個成員。
2, 這是乙個「複雜的類成員」,即是乙個復合型別,如map, vector等。
3, 初始化這個類成員,需要多條語句才能初始化,如需要for,條件判斷。
// a.h
#include class a ;
下面是函式定義
// a.cpp
const std::mapa::m_data = a::contructdata();
std::mapa::contructdata()
return tempdata;
}
顯然,進一步增加需求,還可以完善**:
1, 初始化的函式,不需要訪問「類內」定義的常量。由於每個原始碼檔案是乙個編譯單元,因此可以將該函式限制在當前的命名空間:
namespace
}
2,如果成員變數m_data只有函式"getbool()"訪問,則可將該成員變數移入函式「getbool()」中進行建立.此時data依然只是建立一次。若使用const修飾,則無法改變map中的資料。
int a::getbool(int index)
1, static const和const static 意義相同,沒有區別。
2, 函式中的static變數,只初始化一次,當再次呼叫該函式,static變數不會再次被初始化。
3, static變數是復合物件,且其成員為指標,如下面形式,則const只是對std::map的修飾,即一經初始化,該map不能再做改變,但是其內容可以做出改變,map中的int*指向的資料依然可以被修改。
static const std::mapdata
若想進一步控制map中內容也不被修改,可使用下面**:
static const std::mapdata
C 類的成員變數
類的宣告中類的主體 通常包含類的成員變數和成員方法.宣告成員變數的語法如下 訪問修飾符 資料型別 成員變數 成員變數命名規範如下 如果是公共成員變數 受保護的成員變數 內部成員變數,使用駱駝命名法,如name,gender等。如果是私有成員變數,使用駱駝命名法,並以下劃線開頭。如 age,score...
靜態成員變數 類 C
if 0 如何訪問靜態成員 四種用法 1 rectangle printtotal 2 rectangle r r.printtotal 3 rectangle p r p printtotal 4 rectangle ref r int n ref.ntotalnumber p printtota...
C 類的成員變數
類的宣告中類的主體 通常包含類的成員變數和成員方法.宣告成員變數的語法如下 訪問修飾符 資料型別 成員變數 成員變數命名規範如下 如果是公共成員變數 受保護的成員變數 內部成員變數,使用駱駝命名法,如name,gender等。如果是私有成員變數,使用駱駝命名法,並以下劃線開頭。如 age,score...