很多学习C++的铁汁对于const都不陌生,知道这是定义常量的关键字,但是实际开发中如何使用却不甚了解,今天就对其进行一些梳理。
1.定义常量
const int num=4;
这是最简单的const使用,num表示一个常数4,在定义的同时初始化(因为若不初始化系统也会自动初始化,后边再赋值则视为修改,就会引发错误)。
2.带*的const使用
所谓带*就是指指针,常见形式包括以下三种:
const char *p,char const *p,char * const p.
const char *p: p指向的内容不能通过p来修改
char const *p:同上,都称为常量指针
char * const p:p本身不得修改,这个指针是个常量(指针常量)
拓展:const char * const p;内容不能通过p修改,p也是常量
记忆:当const直接修饰指针p,则p是指针常量,否则就是常量指针;
3.函数中的const
函数形参带const
void fs(const int &i){
I=5;//错误,常量不得修改
}
可以防止无意中修改形参导致实参发生变化;
实参类型可以更加灵活:如果形参非const,那么const的实参没有办法传递给形参;反过来,形参为const,那么不论实参是否为const都可以传递给形参,包括常量数值也可以传递;
int a=5;
const int b=4;
则fs(a),fs(b),fs(3)都是正确的;
成员函数末尾带const(普通函数非成员函数是不能在末尾加const的)
- 成员函数的声明与定义若要加const则都要加;
- 作用:通知系统——这个函数不会修改任何成员变量的值,叫做常成员函数;
- 常对象只能调用常成员函数(因为只有常成员函数能保证不修改常对象);
const Tie abc;
abc.addHour();//错误,addHour不是常成员函数;
abc.showHour();//正确
不管是常成员还是一般成员都可以调用常成员函数