程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++關鍵字static的用法

C++關鍵字static的用法

編輯:C++入門知識

1、cpp文件中的全局靜態變量

全局內的聲明:

static int a=0;

這樣的靜態全局變量就只能被該cpp文件所用,不能被其他cpp文件共享。

若不聲明static:

int a=0;

這樣的全部變量既不能保證a能被其他cpp文件共享,又不能保證不能被其他cpp文件共享。不建議這樣使用,最好加extern:

extern int a=0;


2、靜態局部變量

int f()

{

static int a=1;

}

靜態局部變量保存在靜態變量區,而不是棧中,所以生存周期是整個程序的周期,而不是函數的周期。只申請一次內存,然後下次調用該函數時,還保存著上次a的值。


3、cpp文件中的全局靜態函數

在cpp內聲明:

static int func();

和cpp中的全局靜態變量一樣,該函數的作用域僅為該cpp文件,只能為本cpp所用。若要給多個cpp文件調用,則放在頭文件中,不要加static。


4、類的靜態成員

class A

{

private:

static int a;

}

靜態成員作用域為類A,變量a並不為某個實例所有,而是為整個類有所,是類A的共享成員變量。靜態成員a必須在cpp中初始化:

int A::a =0; //注意:這裡沒有static修飾,因為static是聲明性關鍵字


5、類中的靜態成員函數

class A

{

private:

static void func(int);

}

實現該函數時同樣無需關鍵字static,因為static是聲明性關鍵字;

類的靜態成員函數是該類范疇內的全局函數,不能訪問該類的私有成員,智能訪問該類的靜態成員,不需要實例即可調用,直接A::func(9);

靜態成員函數可以繼承和覆蓋,不能是虛函數。

static沒有this指針。


總結:其實static的原則是他在內存的靜態變量區,所以生存周期不一樣,其次他只申請一次,所以不會被覆蓋。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved