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++ 中有不同的用途,根据具体需求来选择使用。

相关推荐
IT古董1 分钟前
【MES学习笔记系列】MES 术语表
笔记·学习
vHelios7 分钟前
【电商项目】商品服务模块的问题解决与代码逻辑思考
java·sql·mybatis
rannn_11112 分钟前
【力扣hot100】238、41、73题解
java·算法·leetcode·开发
lingran__18 分钟前
C++ 高阶数据结构:AVL 树万字详解|原理、四种旋转、key‑value 实现、调试校验、set/map/红黑树 底层前置知识
数据结构·c++·二叉搜索树·平衡二叉树·avl树·红黑树前置
爱和冰阔落25 分钟前
【Linux】两个毫无关系的进程怎么通信?命名管道 FIFO 从原理到 Server/Client 实战
android·linux·数据库·c++·vim
今天的砖头有点烫手啊33 分钟前
Spring Boot
java·人工智能
码匠许师傅8 小时前
【C++ 面试真题】C++ 的 const 和 constexpr 有什么区别?
c++·面试
码农颜11 小时前
5.4.1 锁分类
java·数据库·mysql
云深处@11 小时前
【数据库】MySQL 入门
数据库·学习·mysql
果果燕11 小时前
实习笔记(一):NFS、Samba、VNC、Git、CMake、systemd、内核、交叉编译
linux·arm开发·c++·笔记·git