const型別定義:指明變數或物件的值是不能被更新,引入目的是為了取代預編譯指令
**************常量必須被初始化*************************
cons的作用
(1)可以定義const常量例如:
constintmax=100;
intarray[max];
(2)便於進行型別檢查例如:
voidf(constinti)
編譯器就會知道i是乙個常量,不允許修改;
(3)可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。
還是上面的例子,如果在函式體內修改了i,編譯器就會報錯;
例如:voidf(constinti)
(5)為函式過載提供了乙個參考。
classa
file://乙個函式
voidf(inti)constfile://上乙個函式的過載
...... };
(6)可以節省空間,避免不必要的記憶體分配。
例如:#definepi3.14159file://常量巨集
constdoulbepi=3.14159;file://此時並未將pi放入rom中
......
doublei=pi;file://此時為pi分配記憶體,以後不再分配!
doublei=pi;file://編譯期間進行巨集替換,分配記憶體
doublej=pi;file://沒有記憶體分配
doublej=pi;file://再進行巨集替換,又一次分配記憶體!
const定義常量從彙編的角度來看,只是給出了對應的記憶體位址,而不是象#define一樣給出的是立即數,所以,const定義的常量在程式執行過程中只有乙份拷貝,而#define定義的常量在記憶體中有若干個拷貝。
(7)提高了效率。
編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為乙個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高。
使用const
(1)修飾一般常量,常陣列,常物件
修飾符const可以用在型別說明符前,也可以用在型別說明符後。例如:
intconstx=2; 或 constintx=2;
intconsta[5]=;或constinta[5]=;
classa; constaa;或aconsta;
(2)修飾指標
constint*a;或intconst*a;//const修飾指向的物件,a可變,a指向的物件不可變
int*consta; //const修飾指標a,a不可變,a指向的物件可變
constint*consta;//指標a和a指向的物件都不可變
(3)修飾引用
constdouble&v;該引用所引用的物件不能被更新
(4)修飾函式的返回值:
const修飾符也可以修飾函式的返回值,是返回值不可被改變,格式如下:
constintfun1();
constmyclassfun2();
(5)修飾類的成員函式:
const修飾符也可以修飾類的成員函式,格式如下:
classclassname ;
這樣,在呼叫函式fun時就不能修改類裡面的資料
(6)在另一連線檔案中引用const常量
externconstinti;//正確的引用
externconstintj=10;//錯誤!常量不可以被再次賦值
*******************放在類內部的常量有什麼限制?
classa ;
初始化類內部的常量
1初始化列表:
classa
private:
constinti; };
2外部初始化,例如:
classa
private:
staticconstinti; };
constinta::i=3;
C C const型別用法總結
const型別定義 指明變數或物件的值是不能被更新,引入目的是為了取代預編譯指令 常量必須被初始化 cons的作用 1 可以定義const常量 例如 const int max 100 int array max 2 便於進行型別檢查 例如 void f const int i 編譯器就會知道i是乙...
C C const型別用法總結
const型別定義 指明變數或物件的值是不能被更新,引入目的是為了取代預編譯指令 常量必須被初始化 cons的作用 1 可以定義const常量 例如 const int max 100 int array max 2 便於進行型別檢查 例如 void f const int i 編譯器就會知道i是乙...
c auto型別用法總結
一 用途 auto是c 程式語言的關鍵字。用於兩種情況 1 宣告變數時根據初始化表示式自動推斷該變數的型別 2 宣告函式時函式返回值的佔位符 二 簡要理解 auto可以在宣告變數時根據變數初始值的型別自動為此變數選擇匹配的型別。舉例 對於值x 1 既可以宣告 int x 1 或 long x 1,也...