一、const简单介绍
在C++中,const是一个关键字,它有几种不同的用途。
当你在声明一个变量时,使用'const',那么这个变量就被视为常量,它一旦被赋值后就不能再被修改。
-
函数参数修饰:当你将一个变量作为函数参数时,使用'const'可以表明这个参数在函数内部不应该被改变。这有助于提高代码的可读性和安全性。
void MyFunction(int const &myVar) { // myVar 在函数内部不能被改变
// ...
}
-
类成员修饰:在类定义中,'const'可以修饰类的数据成员(成员变量)或成员函数。修饰成员变量时,表示这个成员变量在类的对象创建后不能被修改。修饰成员函数时,表示这个成员函数不能修改类的任何数据成员。
class MyClass {
private:
int const myPrivateVar = 5; // myPrivateVar 不能被修改
const int &myPrivateRef = myPrivateVar; // myPrivateRef 指向 myPrivateVar,也不能被修改
public:
void myPublicMethod() const { // myPublicMethod 不能修改类的任何数据成员
// ...
}
};
二、const与指针之间的摩擦
这里声明意思为,指针指向的地址中数据的内容不能被改变
const int *p;
指针指向的地址不能被改变:指针只能指向&a这块地址,但是这时与上面不同,这里可以改变指针指向内容可以改变
int * const p= &a;
还有一种就是指针指向的位置和指针指向的内容都不可改变:和C语言中头部的#define a 20很相似。
const int * const p = &a;