C++cosnt

引言

在C++中,const 关键字是一个非常重要的修饰符,它用于指定一个变量、参数、返回值或成员函数本身为常量,意味着它们的值在初始化之后不能被修改。下面是对 const 关键字在不同上下文中的理解:

const关键字的使用

常量变量

使用 const 修饰的变量是常量变量,其值在初始化后不能被修改。

const int a = 10;  // a 是一个常量变量,其值不能被修改  
// a = 20;  // 这行代码会导致编译错误

在C和C++中使用const关键字修饰的变量是有区别的
在C中const修饰的变量我们可以称之为常量变量
在C++中const修饰的变量我们可以直接就称为常量
我们可以这样来证明:

我们知道在C和C++中使用数组时,我们对数组长度的定义时,需要传入的是一个不可变的值。
当我们在使用C语言时编译以下指令的话可能会编译错误
const int a = 10;
int arr[a];
对于在C++中却能够正常编译运行。当然这可能也跟所使用的编译器有关。

指针和 const

指向常量的指针:指针指向的内容是常量,不能通过该指针修改所指向的内容。

const int* ptr = &a;  // ptr 是一个指向常量的指针,不能通过 ptr 修改 a 的值  
// *ptr = 20;  // 这行代码会导致编译错误

常量指针

指针本身是常量,不能改变指针指向的地址。

int b = 20;   int* const ptr2 = &b;  // ptr2 是一个常量指针,不能改变 ptr2 的值(即不能让它指向其他地址)   // ptr2 = &a;  // 这行代码会导致编译错误

指向常量的常量指针

既是指向常量的指针,也是常量指针。

const int c = 30;  
const int* const ptr3 = &c;  // ptr3 是一个指向常量的常量指针

函数参数

当函数的参数被声明为 const 时,表示在函数内部不能修改这个参数的值。这有助于保护传入的数据,并允许使用临时对象或常量对象作为参数。

void foo(const int& param) {  
    // 不能修改 param 的值  
}

成员函数

当一个成员函数被声明为 const 时,表示这个函数不会修改调用它的对象的任何成员变量(除非它们是 mutable 的)。这对于保证对象的不变性(immutability)非常有用。

class MyClass {  
public:  
    int x;  
    MyClass(int val) : x(val) {}  
  
    int getValue() const {  // 这个函数不会修改对象的任何成员变量  
        return x;  
    }  
  
    // ... 其他成员函数 ...  
};

类类型和 const

当类的对象被声明为 const 时,该对象的所有成员函数(除非它们也被声明为 const)都不能被调用。这有助于确保 const 对象不会被意外地修改。

const MyClass obj(42);  
// obj.x = 50;  // 这行代码会导致编译错误,因为 obj 是 const 的  
int val = obj.getValue();  // 这是可以的,因为 getValue() 是 const 成员函数

总结

const 关键字在C++中是一个强大的工具,用于确保数据的不变性和防止意外的修改。正确使用 const 可以提高代码的可读性、可维护性和安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值