**:有稍修改)
1.1.1.定義普通常量
const double pi = 3.1414926;
const int pool_size = 20;
定義常量有三種方法:巨集、const
、enum
,其中巨集應該盡量避免,而
const
與enum
也各有優缺點,最大的區別就是
enum
只能用於定義包括0的正整數,而不能定義浮點數;而對於定義邏輯關係較近的一組整數時比較適合使用
enum
,也可以考慮使用類代替
enum
。常量必須在定義時進行初始化,之後便不能再賦值。說它不能被賦值並不是說常量的值是絕對不會改變的,只是說不能直接賦值,但可以通過指標及強制型別轉換、const_cast
是可以改變常量的值的。
1.1.2.修飾指標
把const
與指標放到一起,很多人便會想到乙個繞口令
「指標常量與常量指標。
「指標常量
」即乙個指標變數,該變數不能被賦值,而指標指向的記憶體單元的內容是可以改變的;
「常量指標
」即乙個指向常量的指標,指標變數本身可以賦值,而指標指向的記憶體單元的內容是不可以被重新賦值的。
const是修飾型別還是修飾指標,要看
const
的位置,放在
*前就是修飾資料型別,放到
*後就是修飾指標,
const char
和char const
是一樣的。
1.1.3.修飾類成員常量
當使用const
修飾類成員變數時便定義了常資料成員,它的使用與使用類外定義的常量本質上並沒有什麼區別
,由定義知也是靜態的,在這裡只想指出一點:
const
資料成員只能被
const
修飾的函式使用這是沒有根據的,也就是不成立的。
1.1.4.修飾類成員函式
const修飾成員函式語法:
typereturn function(params) const;
使用const
修飾的成員函式不能修改類的成員變數(不管是不是const變數),而且只能呼叫成員類物件
const
函式,這是為了保證防止在函式中對成員資料進行修改,但有個例外,就是
mutable
修飾的成員變數可以在
const
修飾的成員函式中被修改。
另外,const
只能修飾非靜態函式。
1.1.5.修飾類物件、物件引用或物件指標(常量指標)
當const
修飾自定義的類物件時,與修飾
c++內建型別的變數的思想是一致的,但稍有不同,除了不能被賦值外,還不能呼叫沒有使用
const
修飾的非靜態成員函式。當
const
修飾類物件引用、指標時限制是一樣的,因為引用本身與直接使用該變數實質上沒有區別,而使用指標只是將
.操作符改為了
->
本質上還是一樣的
1.1.6.修飾函式引數
const修飾函式的例子是很常見了,表示函式的引數在函式體內不會被意外修改,一般用於修飾輸入引數,例如標準庫中的字串連線函式。
str1
是輸出引數,其內容會被修改,而
str2
為輸入引數,其內容不會修改
(其實這也不一定)。
char* strcat(char* str1, const char* str2);
1.1.7.修飾函式返回值
const可以用於修飾任何型別,只要返回值型別不是
void
,const
就可以用來修飾返回值的型別。但實際上
const
用於修飾非引用的返回值型別是沒有意義的,因為在將返回值賦予另乙個變數時,返回的只是乙個常數值,並且
此時用於傳遞返回值的物件已經被銷毀,不用擔心物件值被更改。
c++:當返回值是引用型別時,如果該引用的值不希望被修改是可以宣告為常引用的返回型別的。
C C 中const修飾符總結
c c 中的const是乙個修飾符,它允許你指定乙個語義上的約束,也就是可以通過const指定乙個 不該被改動 的物件,而編譯器會強制實施這項約束。const語法很多 但都不複雜 下面我將分別講述各種語法及其作用。在講述const修飾符用在指標上有什麼效果之前先來看下指標不加const修飾符的情況 ...
C C 中的const修飾符用法總結
const的基本含義 所以,const修飾符的作用主要是利用編譯器幫助我們檢查自己 的正確性。我們使用const在原始碼中標示出 不應該改變 的地方,然後利用編譯器,幫助我們檢查這些地方是否真的沒有被改變過。如果我們不小心去修改了這些地方,編譯器就會報錯,從而幫助我們糾正錯誤。使用const和不使用...
C 中const修飾符
const只對它左邊的東西起作用 唯一的例外就是const本身就是最左邊的修飾符,那麼它才會對右邊的東西起作用。指標常量 關鍵字順序為 const 和中文順序一致 例如 int const a,表示指標a是乙個常量,初始化後不可更改 永遠指向某個物件 但是指向的物件的值可以修改,如 a 10 常量指...