【C++】const

const 用法:

1. const修饰普通变量,在普通变量定义的前面加上const,变量就不能被重新赋值

2. const修饰指针的写法有点复杂:

const int *p  与 int  const *p完全等价,他们修饰的是*p,也就是*p不能被重新赋值,也就是被指向的对象

int * const p则不一样,它修饰的是p,也就是说p这个指针内存的地址不能动了,但是这个地址指向的变量还可以被重新赋值。

3. const修饰引用

const可以修饰引用:  int x=3; const int &y=x;  这个例子中,const修饰的是y,y是不能被重新赋值的  

4. const修饰函数形参,则表明在函数中,只能读取该形参,不能修改这个形参,以免误操作。

5. const 修饰函数的返回值:如给“指针传递”的函数返回值加const,则返回值不能被直接修改,且该返回值只能被赋值给加const修饰的同类型指针。例如:

const char *GetChar(void){};

char *ch = GetChar(); //错误

const char *ch = GetChar(); //正确

 

const在类中的用法:

1. 使用const修饰类的数据成员,这样做之后,这个类一旦被初始化后,它的数据成员就不能再被改变!

2. 更复杂的是,用const修饰类的成员函数,这样做后,这个常成员函数,不能对该类的数据成员进行修改!

原因在于,对于常成员函数,编译器编译的时候,它会这样认为:

【C++】const

也就是说它会认为函数参数中的this指针被修饰为const,那么this指针指向的数据成员就不能被改变了。

任何不会修改数据成员的函数都应用const修饰,这样,当不小心修改了数据成员或调用了非const成员函数时,编译器都会报错。

类的常成员函数只能由const类来调用,非const类是不能调用常成员函数的!!

调用常成员函数应该这样写:

【C++】const

参考:https://www.cnblogs.com/lanjianhappy/p/7298427.html