由于总是忘记了搞混const 的用法,所以自己写个文章,方便以后自己查阅。
*== 表示等同于
const int* == int const *
指向常量的指针
int u=1;
const int* p = &u;//p可改变,*p 不可改变
int* const
指针常量
int u=1;
int* const p = &u;//p不可改变,*p 可改变
const int* const == int const * const
指向常量的指针常量
int u = 1;
const int* const p = &u;//p不可改变,*p 不可改变
总结1
沿着* 划一条线:
如果const 位于左侧,则该指针指向常量(p可变,*p 不可变)
如果const位于右侧,则该指针本身为常量(p不可变,*p 可变)
const 修饰类
类常量成员函数
class A
{
void fun() const {} //不可修改类成员变量
};
void fun2() const //错误,非成员函数不能这么声明
{}
其中,在fun函数不能调用A类中任何非const修饰的函数,因为任何非const 修饰的函数都有改变成员变量的企图
常量对象
const A a;// a为常量,不能调用任何非const修饰的A类成员函数,理由同上
–END–