const和static的用法總結

2021-09-26 10:13:20 字數 1856 閱讀 3478

(1)const修飾一般常量及陣列

const  int   a=10;         等價的書寫方式: int const  a=10;

const int arr[3]=; int const arr[3]=;

對於類似這些基本資料型別,修飾符const可以用在型別說明符前,也可以用在型別說明符後,其結果是一樣的。

(2)const修飾指標變數*及引用變數&

&應當是取址符,*是指標符,也就是說,

&用於返回變數的實際位址,*用於返回位址所指向的變數,他們應當互為逆運算。

在定義變數的引用的時候,&只是個定義引用的標誌,不代表取位址。

const   char*p1="hello";  *p1不能改

char*const p2="world"; p2不能改

int const c=21;變數c的值不能改

const int*d=&a; 指標變數d指向的值不能改變

int *const e=&b;指標的指向不能改變

int const*f const=&a;指標不能改變,指標指向的值也不能改變

const在*左邊 指標指向常量

const在*右邊 指標本身為常量

(3)函式中使用const

const修飾函式引數

void f(const int i)傳遞過來的引數在函式內不可以改變(因為i本身就是形參)

void f(const char*p) 引數指標所指的內容為常量不可變

void f(char *const p)引數指標本身為常量不可變

(4)用const修飾類成員

使用const關鍵字修飾的函式為常成員函式,宣告格式

型別說明符 函式名(參數列)const

?const是函式型別的乙個組成部分,因此在函式的定義部分也要用const關鍵字。

?如果將乙個物件說明為常物件,則通過該常物件只能呼叫它的常成員函式,而不能呼叫其他成員函式。

?常物件成員函式不能更新目的物件的資料成員,也不能針對目的物件呼叫該類中沒有用const修飾的成員函式。

?const關鍵字可以用於對過載函式的區分。

void print();  

void print() const;

使用const關鍵字修飾的引用為常引用,宣告格式

const 型別說明符 & 引用名

1、靜態全域性變數

在全域性變數前,加上關鍵字static,該變數就被定義成為乙個靜態全域性變數。

#include using namespace std;

void fn();

static int n; //定義靜態全域性變數

void main()

void fn()//定義靜態函式

; int myclass::sum=0;//定義並初始化靜態資料成員

myclass::myclass(int a,int b,int c)

void myclass::getsum()

; int myclass::sum=0;//定義並初始化靜態資料成員

myclass::myclass(int a,int b,int c)

void myclass::getsum() //靜態成員函式的實現

{// cout<?出現在類體外的函式定義不能指定關鍵字static;

?靜態成員之間可以相互訪問,包括靜態成員函式訪問靜態資料成員和訪問靜態成員函式;

?非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員;

?靜態成員函式不能訪問非靜態成員函式和非靜態資料成員;

const和static的區別和用法

const關鍵字 const關鍵字是定義變數之後,其數值便不能更改,比方說 const week days 7 一周有七天,week day被賦予7之後便不能更改 當const用於指標變數定義時,要注意指向常量的指標和常量指標的區別。用比較形象的例子來描述,指向常量的指標就像乙個針標能動而背景板不能...

static 和const關鍵字的用法總結

static關鍵字至少有下列 n個作用 1 函式體內 static 變數的作用範圍為該函式體,不同於 auto 變數,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值 2 在模組內的 static 全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問 3 在模組內的 stat...

static和const的使用

static 檔案域 位置域 區域性,類 在乙個類中宣告了,在類外定義,static變數定義時所在的檔案,就構成了該變數的作用範圍。乙個類的static變數,如果在標頭檔案中定義,多個其他檔案include這個檔案的時候,就會使得這個static有多個實體。也就是乙個類定義了多個static變數,然...