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

相关推荐
2402_8575893618 分钟前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
吾爱星辰42 分钟前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
slomay43 分钟前
关于对比学习(简单整理
经验分享·深度学习·学习·机器学习
hengzhepa1 小时前
ElasticSearch备考 -- Async search
大数据·学习·elasticsearch·搜索引擎·es
哎呦没1 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
小飞猪Jay2 小时前
C++面试速通宝典——13
jvm·c++·面试
编程、小哥哥2 小时前
netty之Netty与SpringBoot整合
java·spring boot·spring
rjszcb2 小时前
一文说完c++全部基础知识,IO流(二)
c++
小小洋洋3 小时前
BLE MESH学习1-基于沁恒CH582学习
学习
IT学长编程3 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统