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

相关推荐
阿伟来咯~3 分钟前
记录学习react的一些内容
javascript·学习·react.js
JSU_曾是此间年少5 分钟前
数据结构——线性表与链表
数据结构·c++·算法
Suckerbin24 分钟前
Hms?: 1渗透测试
学习·安全·网络安全
duration~32 分钟前
Maven随笔
java·maven
水豚AI课代表35 分钟前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
zmgst36 分钟前
canal1.1.7使用canal-adapter进行mysql同步数据
java·数据库·mysql
聪明的墨菲特i37 分钟前
Python爬虫学习
爬虫·python·学习
跃ZHD1 小时前
前后端分离,Jackson,Long精度丢失
java
Diamond技术流1 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
斑布斑布1 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习