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 是一个常量引用,不能在函数中修改它
}

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 常量来定义数组大小

volatile(易失性):

volatile 用于告诉编译器,变量的值可能在程序的执行中被外部因素修改,因此不应进行优化。

通常用于描述硬件寄存器、多线程编程中的共享变量等。

volatile 可以防止编译器对变量的读取和写入操作进行优化,以确保每次访问都是真实的。

示例:

复制代码
volatile int sensorValue; // 用于描述外部传感器值

void readSensor() {
    sensorValue = /* 从传感器读取值 */;
}

int main() {
    while (true) {
        readSensor();
        // 使用 sensorValue 进行操作,编译器不会优化读取操作
    }
}

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

相关推荐
一个真正のman.6 分钟前
c加加学习之day01
学习
蔗理苦28 分钟前
2025-04-03 Latex学习1——本地配置Latex + VScode环境
ide·vscode·学习·latex
Zhichao_972 小时前
【UE5 C++课程系列笔记】32——读Json文件并解析
c++·ue5
Mryan20052 小时前
解决GraalVM Native Maven Plugin错误:JAVA_HOME未指向GraalVM Distribution
java·开发语言·spring boot·maven
VX_CXsjNo12 小时前
免费送源码:Java+SSM+Android Studio 基于Android Studio游戏搜索app的设计与实现 计算机毕业设计原创定制
java·spring boot·spring·游戏·eclipse·android studio·android-studio
ylfhpy2 小时前
Java面试黄金宝典33
java·开发语言·数据结构·面试·职场和发展·排序算法
点云SLAM2 小时前
C++20新增内容
c++·算法·c++20·c++ 标准库
照书抄代码2 小时前
C++11可变参数模板单例模式
开发语言·c++·单例模式·c++11
No0d1es2 小时前
CCF GESP C++编程 四级认证真题 2025年3月
开发语言·c++·青少年编程·gesp·ccf·四级·202503
乘风!2 小时前
Java导出excel,表格插入pdf附件,以及实现过程中遇见的坑
java·pdf·excel