const关键字是C++中常见的用于声明常量变量的关键字。它表示该变量不可被修改,使用const关键字修饰的变量在程序运行中是只读状态,不能被修改。
一、const关键字的定义语法:
const 类型说明符 变量名 = 变量值;
例如:
int const i = 123; // const 在类型说明符的左边
const int j = 123; // const 在类型说明符的右边
以上两种定义方式是等价的,都表示i和j是只读变量,不能被修改。
二、const关键字的使用场景:
- 声明常量
使用const关键字可以方便地声明常量。
例如:
const int MAX_NUM = 100; // 声明一个最大值常量
const float PI = 3.1415926; // 声明一个π的常量
- 防止变量被修改
使用const关键字可以防止变量被意外地修改,提高代码的安全性和可维护性。
例如:
void foo(const int i) // 函数参数i是只读变量,不能被修改
{
// i = 123; // 编译错误,不能修改只读变量
}
- 修饰函数返回值
使用const关键字修饰函数返回值可以避免函数返回值被修改。
例如:
const char* getName() // 声明一个返回值为只读字符指针的函数
{
static const char* name = "abc";
return name;
}
int main()
{
const char* n = getName(); // 外部调用getName函数返回的指针只能用来访问字符,不能修改
// n[0] = 'd'; // 编译错误,不能修改只读变量
cout << n << endl; // 输出"abc"
return 0;
}
三、const关键字注意点:
- const关键字不能修改常量本身的值,但可以通过指针修改常量的值。如果想要完全避免修改,可以使用const修饰指针,使其指向的值也是只读的,即
const int *p
。
例如:
const int MAX_NUM = 100; // 声明一个最大值常量
int* p = (int*)&MAX_NUM; // 将MAX_NUM强制转换成int指针,p指向MAX_NUM的地址
*p = 200; // 修改*p所指向的内存,也就是MAX_NUM的值
cout << "MAX_NUM = " << MAX_NUM << endl; // 输出"MAX_NUM = 100",没有被修改
- const关键字不是万能的,只能保证变量本身不被修改,但不能阻止变量所指向的对象被修改。如果想要避免这种情况,可以使用mutable关键字声明可变成员变量。
例如:
class Example
{
public:
int getId() const // const修饰的成员函数
{
// m_id = 123; // 编译错误,不能修改const成员函数的成员变量m_id
return m_id;
}
private:
mutable int m_id = 456; // mutable关键字声明可变成员变量m_id
};
int main()
{
Example ex;
cout << ex.getId() << endl; // 输出"456"
ex.getId(); // 不会修改m_id的值
return 0;
}
四、总结
const关键字是C++中常见的用于声明常量变量和防止被修改的关键字。在实际使用过程中要注意一些细节问题,例如const指针可以修改指针所指向的内容、mutable关键字可以修饰可变成员变量等。掌握const关键字的使用,能够写出更加安全、简洁、易于维护的C++程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中的const关键字是什么? - Python技术站