C 類成員函式中的靜態變數的作用域

2021-06-27 21:47:04 字數 998 閱讀 2846

本來的乙個想法是c++ 的類的成員函式是屬於這個類的,那麼這個類的成員函式中的靜態變數也是屬於這個類的。不過越想越感覺不對勁,於是寫了個測試**,試了一下。還真不對,結果是類的成員函式中的靜態變數,他的作用域是這個成員函式,不管是不是這個類的同乙個例項化物件,他們都共用這乙個靜態變數。也就是說函式的靜態變數還是跟c 一樣的解釋。

其實這樣想法真的挺傻,用乙個私有成員變數就可以處理為每乙個例項化物件都有自己的操作變數了,而不需要宣告和定義乙個靜態變數。

直接給出測試**吧。

// test.h

#ifndef test_h

#define test_h

class clstest

~clstest() {}

void func() const;

};#endif // test_h

// test.cpp

#include "test.h"

#include void clstest::func() const

// main.cpp

#include #include "test.h"

int main(int argc, char *argv)

// 執行結果

test01 ########################

stestnum = 1

stestnum = 2

stestnum = 3

stestnum = 4

test01 ########################

test02 ########################

stestnum = 5

test02 ########################

C 類中的靜態變數和靜態成員函式

靜態資料成員 下面看乙個例子 include class point public void output static void init void main void point pt pt.init pt.output 這樣編譯是不會有任何錯誤的。下面這樣看 include class poi...

C 中類中的靜態變數成員與靜態成員函式

宣告為static的類成員 成員資料或成員函式 稱為類的靜態成員特性 靜態變數成員的初始化 對於靜態變數成員的初始化,不能在建構函式的初始化列表中直接進行初始化 class date friend ostream operator private int year int month static ...

c 靜態變數,靜態成員變數,靜態成員函式

c 靜態變數的生存期和程式的執行期相同,使用關鍵字static宣告 static int i 5 靜態變數和全域性變數有點類似,儲存在記憶體靜態 全域性變數區。靜態變數不會因為函式的呼叫而產生乙個副本,也不會隨著函式返回而失效,靜態變數在函式執行期間是共享的。c 類的靜態成員是解決同乙個類的不同物件...