这里针对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成员函数。
内存