C/C++中static的區別

static 用途
1 static局部變量 表示該變量不是auto型的,就是說,該變量在程序開始的時候創建,在程序結束的時候存儲空間不釋放,使用的時候沿用上一次的那個值
2 static 全局變量 表示該變量只能在本文件中使用,不能被其他文件使用
3 static 函數 表示該函數只能在本文件中使用 不能被其他文件中的函數調用
4 static 類成員變量 表示這個類被全類擁有 該類的所有對象只有一份拷貝
5 static 成員函數 表示這個函數被全類擁有 而且只能訪問靜態成員變量

const 用途
1 const 常量:該數不允許被改變,若改變編譯器報錯,定義時就要初始化,不然以後就再也沒有機會初始化了
2 const 函數形參:f(const int a);表示該形參是一個輸入形參,在函數裏不能改變其值
3 const 指針:讓指針本身爲const 或者指針所指爲const 或者兩者同時爲const
4 類的成員函數 const :表示該函數只能對成員變量進行只讀操作
5 const 類的成員函數:返回值爲const,使得其返回值不能左值

static關鍵字至少有下列n個作用:
(1)函數體內static變量的作用範圍爲該函數體 ,不同於auto變量,該變量的內存只被分配一次,因此其值在下次調用時仍維持上次的值;
(2)在模塊內的static全局變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問;
(3)在模塊內的static函數只可被這一模塊內的其它函數調用,這個函數的使用範圍被限制在聲明它的模塊內;
(4)在類中的static成員變量屬於整個類所擁有,對類的所有對象只有一份拷貝;
(5)在類中的static成員函數屬於整個類所擁有,這個函數不接收this指針,因而只能訪問類的static成員變量。

const關鍵字至少有下列n個作用:
(1)欲阻止一個變量被改變,可以使用const關鍵字。在定義該const變量時,通常需要對它進行初始化,因爲以後就沒有機會再去改變它了;
(2)對指針來說,可以指定指針本身爲const,也可以指定指針所指的數據爲const,或二者同時指定爲const;
(3)在一個函數聲明中,const可以修飾形參,表明它是一個輸入參數,在函數內部不能改變其值;
(4)對於類的成員函數,若指定其爲const類型,則表明其是一個常函數,不能修改類的成員變量;
(5)對於類的成員函數,有時候必須指定其返回值爲const類型,以使得其返回值不爲”左值”。例如:
const classA operator*(const classA& a1,const classA& a2);
operator*的返回結果必須是一個const對象。如果不是,這樣的變態代碼也不會編譯出錯:
classA a, b, c;
(a * b) = c; // 對a*b的結果賦值
操作(a * b) = c顯然不符合編程者的初衷,也沒有任何意義。

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