C++中使用const修饰的几类场景
1、常量变量:通过将类型名前加const
关键字创建常量变量,一旦初始化,其数值就不能改变。如:const int x = 5;
2、指向常量的指针:指针本身是变量,但通过在指针类型前加const
可以创建指向常量的指针,即指针指向的值不能被改变。如:const int *prt = &x;
3、常量指针:通过在指针名前加const
可以创建常量指针,即指针本身的值(即地址)不能被改变。如:
int y = 10;
int *const ptr = &y;
4、常量成员函数:在成员函数声明和定义中,通过在函数参数列表后加const关键字,表示该函数是常量成员函数,该函数不能修改类的成员变量,保证了对常量对象的只读访问。在常量对象或常量对象的引用上,只有常量成员函数可以被调用。这是因为常量对象的状态不能被修改,所以只有常量成员函数的调用是安全的。常量对象调用常量成员函数举例:
#include <iostream>
class Rectangle {
private:
double length;
double width;
public:
Rectangle(double len, double wid) : length(len), width(wid) {}
// 常量成员函数,用于获取矩形的面积
double calculateArea() const {
return length * width;
}
};
int main() {
const Rectangle rect(3.5, 2.5); // 创建一个常量对象
// 调用常量成员函数计算面积
std::cout << "Area of the rectangle: " << rect.calculateArea() << std::endl;
return 0;
}
那么常量对象有什么用呢?它有几个优点:
1. 确保数据不被修改;
2. 提高程序安全性,一旦对象被声明为常量,任何试图修改它的操作都会在编译时被拒绝;
3. 提高编译器优化,因为它们的状态是已知不会被改变的,常量对象允许编译器进行更多的优化,从而提高程序的性能;
4. 作为输入数据,常量对象可以作为输入数据,如函数的参数或者类的成员变量,以确保这些数据在使用过程中不会被意外地改变。