1、const修饰普通变量 变量变为常变量,具有常数性质的变量。不可以修改(只读)。 2、const修饰指针 int a=10;const int* p1=a;int const *p2=a;int* const p3=a; 第一个const修饰的是*p1,也就是不可以
1、const修饰普通变量
变量变为常变量,具有常数性质的变量。不可以修改(只读)。
2、const修饰指针
int a=10;
const int* p1=&a;
int const *p2=&a;
int* const p3=&a;
第一个const修饰的是*p1,也就是不可以通过指针引用去修改指针所指向变量的值。
第二个与第一个效果相同,写法不一样而已。
第三个const修饰的是指针本身p3,表示指针不可修改。
3、const修饰函数形参
const修饰引用形参
void func(const int& val)
表示无法通过引用修改实参,这里的引用实际是实参的一个别名,没有进行拷贝,保证了外部数据的安全性。
注意:如果函数的参数是非const的引用,则他就不能接受const实参变量,这样会造成权限的放大,如果函数的参数是const指针或引用,则它既可以接受 const的实参变量,也可以接受非const实参变量,权限只能缩小不能放大。
4、const修饰成员变量
表示为成员常量,不能修改,同时他只能在初始化列表中赋值。
5、const修饰成员函数
const成员函数表示不能修改this指针,所指向对象的成员变量也不可以修改,const修饰类成员函数实际上是:const 类类型 *const this,
class data
{
public:
void display()const
{
...;
}
//实际写法
void display(const data *const this)
{
...;
}