C++ const 限定符的全面介绍

2023-12-29 04:06:58

C++ const 限定符的全面介绍

1. const 修饰基本数据类型

定义

const 修饰的基本数据类型变量,值不可改变。

语法

const type variable = value;

特点

不可变性,增加代码可读性。

作用

定义不可修改的常量。

使用场景

全局常量、配置项。

注意事项

必须在声明时初始化。

代码示例

#include <iostream>
using namespace std;

int main() {
    const int maxCount = 10;
    cout << "Max count: " << maxCount << endl;
    // maxCount = 20; // 错误:不能修改 const 变量
    return 0;
}

运行结果

Max count: 10

总结

适用于定义程序中的固定值,提高安全性和可维护性。


2. const 修饰指针变量和引用变量

定义

使指针指向的数据或指针本身成为常量。

语法

const type* ptr; // 指针指向的数据是常量
type* const ptr; // 指针本身是常量
const type& ref; // 引用的是常量

特点

防止通过指针或引用修改数据。

作用

保护指向的数据或保护指针本身不被更改。

使用场景

函数参数,防止指针/引用意外修改数据。

注意事项

区分指针指向常量和常量指针。

代码示例

#include <iostream>
using namespace std;

void display(const int* ptr) {
    cout << "Value: " << *ptr << endl;
}

int main() {
    int value = 10;
    const int* ptrToConst = &value; // 指向常量的指针
    display(ptrToConst);

    int* const constPtr = &value; // 常量指针
    *constPtr = 20;
    display(constPtr);

    return 0;
}

运行结果

Value: 10
Value: 20

总结

用于保护数据不被意外修改,提高代码的安全性。

3. const 应用到函数中

定义

函数参数、返回值或成员函数使用 const

语法

void func(const type arg); // 参数是常量
const type func();         // 返回常量
type func() const;         // 常量成员函数

特点

保护函数参数和返回值,确保对象成员函数不修改对象状态。

作用

防止函数修改输入数据,保证成员函数不改变对象状态。

使用场景

当不希望函数更改数据或对象状态时。

注意事项

常量成员函数不能修改任何成员变量。

代码示例

#include <iostream>
using namespace std;

class MyClass {
public:
    MyClass(int val) : value(val) {}
    int getValue() const { return value; } // 常量成员函数

private:
    int value;
};

void printValue(const MyClass& obj) {
    cout << "Value: " << obj.getValue() << endl;
}

int main() {
    MyClass obj(10);
    printValue(obj);
    return 0;
}

运行结果

Value: 10

总结

确保数据和对象状态的安全性和稳定性。


4. const 在类中的用法

定义

在类定义中使用 const 修饰成员变量和成员函数。

语法

class MyClass {
public:
    MyClass(int val) : constMember(val) {}
    int getConstMember() const { return constMember; } // 常量成员函数
private:
    const int constMember; // 常量成员变量
};

特点

增强类封装,确保数据安全。

作用

定义不可变的成员变量和不改变对象状态的成员函数。

使用场景

设计不可变成员或保证成员函数的安全性。

注意事项

常量成员变量必须在构造函数初始化列表中初始化。

代码示例

#include <iostream>
using namespace std;

class MyClass {
public:
    MyClass(int v) : constMember(v) {}
    int getConstMember() const { return constMember; }

private:
    const int constMember;
};

int main() {
    MyClass obj(10);
    cout << "Const member: " << obj.getConstMember() << endl;
    return 0;
}

运行结果

Const member: 10

总结

在类中使用 const 提高成员变量和函数的安全性和稳定性。


5. const 修饰类对象

定义

定义不可改变的类对象。

语法

const ClassName object;

特点

常量对象只能调用其常量成员函数。

作用

确保对象状态不被更改。

使用场景

需要只读访问对象时。

注意事项

常量对象不能调用非常量成员函数。

代码示例

#include <iostream>
using namespace std;

class MyClass {
public:
    MyClass(int v) : value(v) {}
    int getValue() const { return value; }

private:
    int value;
};

int main() {
    const MyClass constObject(10);
    cout << "Const object value: " << constObject.getValue() << endl;
    return 0;
}

运行结果

Const object value: 10

总结

使用 const 修饰类对象可确保对象的完整性和不变性,适合只读场景。

文章来源:https://blog.csdn.net/qq_39811006/article/details/135280501
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。