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