• c++ 学习 之 const,constexpr,volatile


    前言

    const、constexpr 和 volatile 是 C++ 中用于修饰变量和类型的关键字

    正文

    它们分别用于不同的用途:

    const(常量):
    const 用于声明常量,表示变量的值不能被修改。
    它可以应用于变量、指针、引用、成员函数以及类对象
    常量变量必须在声明时初始化。
    常量成员函数承诺不修改对象的状态。
    常量指针和常量引用可以用于传递参数,以确保函数不会修改传入的值。
    示例:

    const int x = 5; // 声明一个常量整数
    const double PI = 3.14159; // 声明一个常量双精度浮点数
    
    void foo(const int& val) {
        // val 是一个常量引用,不能在函数中修改它
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    constexpr(常量表达式):
    constexpr 用于声明常量表达式,它在编译时求值。
    constexpr 变量必须在声明时用常量表达式初始化,可以用于编译时计算。
    constexpr 函数可以在编译时计算,用于生成编译期常量。
    constexpr 可以提高性能,因为编译器可以在编译时执行计算,而不需要在运行时进行计算。
    示例:

    constexpr int square(int x) {
        return x * x;
    }
    
    constexpr int result = square(5); // 编译时计算
    
    const int size = 10;
    int arr[size]; // 使用 const 常量来定义数组大小
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    volatile(易失性):
    volatile 用于告诉编译器,变量的值可能在程序的执行中被外部因素修改,因此不应进行优化。
    通常用于描述硬件寄存器、多线程编程中的共享变量等。
    volatile 可以防止编译器对变量的读取和写入操作进行优化,以确保每次访问都是真实的。
    示例:

    volatile int sensorValue; // 用于描述外部传感器值
    
    void readSensor() {
        sensorValue = /* 从传感器读取值 */;
    }
    
    int main() {
        while (true) {
            readSensor();
            // 使用 sensorValue 进行操作,编译器不会优化读取操作
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    总之,const 用于声明常量,constexpr 用于声明编译时常量,而 volatile 用于告诉编译器变量的值可能会在外部因素的影响下发生变化。这些关键字在 C++ 中有不同的用途,根据具体需求来选择使用。

  • 相关阅读:
    win11安装ubuntu(by wsl2)
    Node.js安装记录
    机器学习 - 似然函数:概念、应用与代码实例
    基于Python是疫情期间教育领域新闻知识图谱分析
    2024计算机二级6
    运维开发详解
    2022-10-27 工作记录--Swiper/React-解决swiper处理动态数据出现样式紊乱、抖动问题
    Spring源码-总体架构体系和源码环境搭建
    本地启动RocketMQ未映射主机名产生的超时问题
    获取Flink作业在HDFS上保存的最新的savepoint文件路径
  • 原文地址:https://blog.csdn.net/wniuniu_/article/details/132721733