c 類中的靜態成員函式總結

2021-07-23 08:23:50 字數 1431 閱讀 9728

參考

1.c++中可以對類中私有成員中的靜態變數初始化嗎?

一般情況下對類中私有部分的訪問可以是公共部分的成員函式,也可以是友元函式。那可以直接對私有部分的靜態成員進行初始化嗎。

(1)static成員的所有者是類本身和物件,但是所有物件擁有一樣的靜態成員。從而在定義物件時不能通過建構函式對其進行初始化。

(2)靜態成員不能在類定義裡邊初始化,只能在class body外初始化。

(3)靜態成員仍遵循public,private,protected的訪問準則

(4)靜態成員函式不可以呼叫類的非靜態成員。因為靜態成員函式不含this指標。 

【示例**】

#include#includeusing namespace std;

class account

~account()

static double rate()

static void rate(double);

static double interestrate1;//public,其他非成員可以訪問

private:

string owner;

double amount;

static double interestrate2; //private,成員和友元才可訪問

static double initrate();

};double account::interestrate1 = 2.0; //正確的靜態成員初始化

double account::interestrate2 = 3.0;

double account::initrate()

//所有的靜態成員在類體外定義時都不再寫static

void account::rate(double newrate)

int main()

2.靜態成員函式不允許引用類的非靜態成員,但可以訪問物件中的非靜態成員

【示例**】

#includeusing namespace std;

class m

static void f1(m m);

private:

int a;

static int b;

};void m::f1(m m)

int m::b = 0;//一直不明白這裡的b不是私有的嗎?為什麼可以直接訪問?是因為這句話沒有在任何函式中嗎?

void main()

c++中初始化類中的靜態陣列

class a

;

int a::arr[3]=;

int main()

{ a a;

cout<

關於靜態成員函式的總結還可以參考

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...