這里針對C++中const的一些一般用法進行一下簡單的總結
一、定義常量
常量不可修改
const int val = 5; int const val = 5;
與#define宏定義常量的區別:
(1)const常量具有類型,編譯器可以進行安全檢查;#define宏定義沒有數據類型,只是簡單的字符串替換,不能進行安全檢查。
(2)有些集成化的調試工具能對const常量進行調試,對宏常量不能調試
二、修飾指針
(1)const int* p; //指針p指向的內容是常量,不可改變。 (2)int* const p; //指針本身是一個常量,不可改變。 (3)const int* const p; //指針本身和指向的內容都是常量,都不可以改變。
區分方法,*p代表對象內容,p代表指針本身,看const修飾的是哪個。
三、在函數中使用const
修飾函數參數
void function(const int Var);
表明參數在函數體內不能被修改,但此處沒有任何意義,Var本身就是形參,在函數內不會改變。
包括傳入的形參是指針也是一樣。
(1)使用引用參數,可以防止創建副本,減少內存開銷,同時可以在函數中對引用參數修改,函數結束后,引用參數的修改仍然存在。
(2)如果為了防止對引用參數進行修改,可以對該參數加上const關鍵字。
修飾函數返回值
與修飾普通變量和指針意義差不多,而在傳引用時,如果不希望函數返回值被改變,就可以添加關鍵字 const 。
四、在類中使用const
修飾類成員變量
class A { const int nValue; }
(1)成員常量不可被修改。
(2)只能在初始化列表中被賦值。
修飾類成員函數
class A { void function()const; }
(1)常成員函數, 它不改變對象的成員變量. 代表只讀函數,增加程序的可讀性。
(2)不能調用類中任何非const成員函數。
