c++中的const关键字详解

在C++中,const 关键字用于定义常量,表示某个值或对象是不可修改的。它可以应用于变量、函数参数、函数返回值、成员函数等。下面详细解释 const 的各种用法:

1. 常量变量

使用 const 修饰的变量必须在声明时初始化,且之后不能被修改。

const int x = 10;
// x = 20;  // 错误:x 是常量,不能修改

2. 指针与 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 是常量指针,不能指向其他地址

 

3. 函数参数中的 const

在函数参数中使用 const 可以防止函数内部修改传入的参数。

void printValue(const int& value) {
    // value = 10;  // 错误:value 是常量引用,不能修改
    std::cout << value << std::endl;
}

4. 函数返回值中的 const

const 可以用于函数返回值,表示返回的值不能被修改。

const int getValue() {
    return 42;
}

int main() {
    // getValue() = 10;  // 错误:返回值是常量,不能修改
    return 0;
}

 

5. 成员函数中的 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;
}

 

6. const 对象

const 对象是指对象本身不能被修改。对于 const 对象,只能调用 const 成员函数。

const MyClass obj;
// obj.value = 10;  // 错误:obj 是常量对象,不能修改成员变量
int v = obj.getValue();  // 正确:getValue 是 const 成员函数

 

总结

const 关键字在C++中用于定义常量,防止变量、指针、函数参数、返回值或成员函数被意外修改。合理使用 const 可以提高代码的安全性和可读性。

你可能感兴趣的:(c++,开发语言)