c++ 的static關鍵字修飾c++中類的成員變量

static在c中可修飾全局變量,局部變量,函數。在這三方面,c++中的static作用與c一致。

但是在c++中,多了叫類的語法,static可以修改類中的成員變量和成員函數。

當static修飾c++中類的成員變量時,該成員變量屬於該類,初始化在類外面進行,且必須初始化。

class A{
public :
static int b;//聲明一個靜態的成員變量
private:
   int a ;

}

int A::b=10;//初始化static靜態成員變量
//b保存在內存全局data區,sizeof(A)時,不會包含靜態成員變量b,大小爲4


//==============================================================
//==============================================================
struct B{
int a;
static int b;//聲明一個靜態的結構體變量
}

//sizeof(B)時,不會包含變量b,大小爲4

修改c++中類的static成員變量時,直接修改,A::b=20;

 

1,static 成員變量實現了同類對象間信息共享。
2,static 成員類外存儲,求類大小,並不包含在內。
3,static 成員是命名空間屬於類的全局變量,存儲在 data 區。
4,static 成員只能類外初始化。
5,可以通過類名訪問(無對象生成時亦可),也可以通過對象訪問。
#define  _CRT_SECURE_NO_WARNINGS 
#include <iostream>

using namespace std;

class AA
{
public:
	AA(int a, int b)
	{
		m_a = a;
		m_b = b;
	}

	int getC()
	{
		cout << "c = " << m_c << endl;
		m_c++;
		return m_c;
	}

	static int m_c;//靜態的成員變量  //1 在類的內部聲明這個變量 用static
						//靜態的成員變量是對本來共享,所有本類中的對象 都是公用一個內存區域
private:
	int m_a;
	int m_b;
};


//2 靜態成員變量的初始化, 在類的外部去寫
int AA::m_c = 0;

int main(void)
{
	AA aa1(10, 20), aa2(100,200), aa3(1000,2000);

	aa1.getC();
	aa2.getC();
	aa3.getC();

	//怎麼去修改一個靜態的成員變量
	AA::m_c = 200;

	aa1.getC();
	aa2.getC();
	aa3.getC();



	
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章