C++中使用const修饰的几类场景

发布时间 2024-01-04 14:45:34作者: FreeCheng

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. 作为输入数据,常量对象可以作为输入数据,如函数的参数或者类的成员变量,以确保这些数据在使用过程中不会被意外地改变。