const很重要,也很难用!
const是衡量一个程序员是否老道的一个标准,它除了可以修饰变量之外,还可以修饰函数
const修饰变量(常量,可读不可写)
TYPE const ValueName = value;
const TYPE ValueName = value;
const修饰引用
const TYPE & ValueName = value;
const 引用的目的是,禁止通过修改引用值来改变被引用的对象,const变量不能绑到非const引用!
const修饰指针
- 指针本身是常量不可变
(char*) const pContent;
const (char*) pContent;
- 指针所指向的内容是常量不可变
const (char) *pContent;
(char) const *pContent;
- 两者都不可变
const char* const pContent;
还有其中区别方法,沿着号划一条线:
如果const位于的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。
const修饰函数
const int& fun(int& a); //修饰类的成员返回值(比如:类的getter方法)
int& fun(const int& a); //修饰形参(比如:类的setter方法)
int& fun(int& a) const{} //const成员函数
- 修饰类的成员返回值
这种多是修饰返回值是引用类型的情况下,为了避免返回值被修改的情况,返回值使用引用多半减少内存拷贝,没有这方面的考虑,直接返回值也是一样的 - 修饰形参
形参使用引用,可以减少内存拷贝,节省内存,并且可以起到改变实参的目的。不过有的时候我们并不希望改变实参的值,就要加上const关键字 - const 成员函数中不能对该类的任何成员变量进行修改,const成员函数中不能调用该类的非const成员函数