在C++中,const
关键字用于定义常量,表示某个值或对象是不可修改的。它可以应用于变量、函数参数、函数返回值、成员函数等。下面详细解释 const
的各种用法:
使用 const
修饰的变量必须在声明时初始化,且之后不能被修改。
const int x = 10;
// x = 20; // 错误:x 是常量,不能修改
const
const
可以与指针结合使用,形成以下几种情况:
指向常量的指针:指针指向的值不能被修改,但指针本身可以指向其他地址。
const int* ptr = &x;
// *ptr = 30; // 错误:不能通过 ptr 修改 x 的值
int y = 20;
ptr = &y; // 正确:ptr 可以指向其他地址
常量指针:指针本身不能被修改,即不能指向其他地址,但可以通过指针修改指向的值。
int z = 30;
int* const ptr2 = &z;
*ptr2 = 40; // 正确:可以通过 ptr2 修改 z 的值
// ptr2 = &y; // 错误:ptr2 是常量指针,不能指向其他地址
指向常量的常量指针:指针本身和指针指向的值都不能被修改。
const int* const ptr3 = &x;
// *ptr3 = 50; // 错误:不能通过 ptr3 修改 x 的值
// ptr3 = &y; // 错误:ptr3 是常量指针,不能指向其他地址
const
在函数参数中使用 const
可以防止函数内部修改传入的参数。
void printValue(const int& value) {
// value = 10; // 错误:value 是常量引用,不能修改
std::cout << value << std::endl;
}
const
const
可以用于函数返回值,表示返回的值不能被修改。
const int getValue() {
return 42;
}
int main() {
// getValue() = 10; // 错误:返回值是常量,不能修改
return 0;
}
const
在类的成员函数后加上 const
,表示该函数不会修改类的成员变量。
class MyClass {
public:
int value;
void setValue(int v) { value = v; }
int getValue() const { return value; } // const 成员函数
};
int main() {
const MyClass obj;
// obj.setValue(10); // 错误:obj 是常量对象,不能调用非 const 成员函数
int v = obj.getValue(); // 正确:getValue 是 const 成员函数
return 0;
}
const
对象const
对象是指对象本身不能被修改。对于 const
对象,只能调用 const
成员函数。
const MyClass obj;
// obj.value = 10; // 错误:obj 是常量对象,不能修改成员变量
int v = obj.getValue(); // 正确:getValue 是 const 成员函数
const
关键字在C++中用于定义常量,防止变量、指针、函数参数、返回值或成员函数被意外修改。合理使用 const
可以提高代码的安全性和可读性。