static靜態變量分析

1,靜態局部變量,在全局區分配內存,生命週期是整個程序運行時間,作用域是該局部作用域

//static int a  = 10; 把a變成一個狀態變量

//a初始化的時候10 ,只初始化一次,之後static int a  = 10;不再執行

//a = 11 

int& mygg()

{

static int a  = 10;

printf("a:%d", a);

return a;

}

 

int main03()

{

mygg() = 11;

mygg();

system("pause");

return 0;

}

運行結果:a=10,a=11;

2,當static修飾某方法,則該方法只能在該.c文件中使用在別的文件無法使用extern 無法使用

//這個函數myprintf只能在這個c中被使用

static void myprintf()

{

printf("鋤禾日當午,生活真是苦");

printf("很好很好");

}

3當static修飾類成員時該靜態成員局部於類不屬於某個對象不論創建多少個對象該成員數據共享static成員應拿出類外面初始化 

class Test3

{

public:

Test3(int a, int b)

{

m_a = a;

m_b = b;

cout<<m_a<<endl;

count ++;

cout<<"構造執行"<<endl;

}

~Test3()

{

cout<<"析構執行"<<endl;

}

static int getCount()

{

return count;

}

protected:

private:

int m_a; //屬於具體的對象

int m_b;

//static修飾的變量或者函數,屬於這個類,不屬於具體的對象

static int count;

};

 int Test3::count  = 0;

void main()

{

Test3 t1(1, 3), t2(3, 4), t3(5, 65);

    //可以通過類::靜態方法或者對象直接調用

cout<<Test3::getCount()<<endl;;

cout<<t3.getCount()<<endl;;

system("pause");

}

普通方法可以引用靜態數據而靜態方法不可以使用普通成員

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