const用处:
- 修饰普通变量(和宏常量对比)
- 修饰类成员(修饰成员函数和成员变量)
- 修饰对象
修饰成员变量:(后面补)
修饰成员函数:
修饰成员函数是修饰三处 const int test (const int a) const
-
const修饰函数返回值: 在接收时不能修改返回值 -
const修饰函数参数: 不能修改函数形参 -
const修饰成员函数本身—const成员函数: 本质是在修饰this的指向(所以不能修饰全局函数,全局函数中无this指针)
this指针的类型是 类类型* ;函数const修饰后指针类型变成:const 类类型* ;
不能通过this修改对象中成员变量的值;只能在该函数中读取不能修改
如果要在const函数中修改某个成员变量的值,则需要在定义成员变量前加关键字mutable
void test()
{
_day+=1;
}
void test()const
{
_day+=1;
}
修饰对象:
- const对象(表明该对象中的成员变量不能被修改):
不能调用普通成员函数(普通函数可会修改变量值),只能调用const函数,该函数返回值最好也用const修饰;
普通对象均可调用两种函数
- const成员函数:
可以调用const成员函数,不能调用普通成员函数(内部可能会修改this指向);
普通成员函数均可调用两种函数
也就是说,普通类型调用范围更大
注:
- const只能修饰成员函数,不能修饰普通函数,因为普通函数没有this指针,而const实质是修饰this指针;
- 普通成员函数的this指针类型为(类类型* ,类类型* const,之前初识this指针时并未接触const);
原因:普通成员函数this指针的指向不能修改,但是指向对象空间的内容可以修改
|