当前位置: 首页 > wzjs >正文

天河建设网站长沙百度网站推广优化

天河建设网站,长沙百度网站推广优化,阜宁住房和城乡建设局网站,wordpress 二次元主题文章目录 volatile、const、mutable 关键字的作用、联系与区别 1️⃣ **volatile** —— 防止编译器优化,确保变量每次访问都从内存读取**作用****使用场景****示例** 2️⃣ **const** —— 限制变量的修改,保证不可变性**作用****使用场景****示例** 3️…

文章目录

      • `volatile`、`const`、`mutable` 关键字的作用、联系与区别
    • 1️⃣ **`volatile`** —— 防止编译器优化,确保变量每次访问都从内存读取
      • **作用**
      • **使用场景**
      • **示例**
    • 2️⃣ **`const`** —— 限制变量的修改,保证不可变性
      • **作用**
      • **使用场景**
      • **示例**
    • 3️⃣ **`mutable`** —— 允许 `const` 成员变量在 `const` 成员函数中修改
      • **作用**
      • **使用场景**
      • **示例**
    • 4️⃣ **`volatile`、`const` 和 `mutable` 的联系与区别**
      • **如何组合使用**
    • **总结**

volatileconstmutable 关键字的作用、联系与区别

在 C++ 中,volatileconstmutable 都与变量的存储和访问方式有关,但它们的作用和应用场景不同。


1️⃣ volatile —— 防止编译器优化,确保变量每次访问都从内存读取

作用

  • volatile 告诉编译器 该变量的值可能随时被外部修改(如硬件寄存器、多线程、信号处理),因此每次访问都必须从内存读取,而不能进行优化
  • 防止编译器缓存变量的值到寄存器,确保变量每次访问都是最新的。

使用场景

  1. 多线程编程:防止编译器优化掉 while (!flag) 这样的轮询等待。
  2. 硬件寄存器:嵌入式系统中,访问某些 I/O 端口或寄存器时,数据可能随时变化。
  3. 中断处理:某些变量可能会被中断函数修改,主程序需要正确读取它们的最新值。

示例

volatile bool flag = false;void waitForEvent() {while (!flag) { // 如果没有 volatile,编译器可能优化掉这个循环,导致死循环// 等待事件发生}
}

2️⃣ const —— 限制变量的修改,保证不可变性

作用

  • const 关键字用于防止变量被修改,可以修饰变量、函数参数、成员函数等。
  • 提高代码的安全性和可读性,让编译器检查不可变的变量是否被错误修改。

使用场景

  1. 防止修改变量,例如 const int a = 10;
  2. 修饰指针,控制指针本身或指向的内容是否可变。
  3. 用于成员函数,表示该成员函数不会修改类的成员变量。

示例

const int x = 100;  // 变量 x 不能被修改void print(const std::string& str) { // 传递 const 引用,防止修改std::cout << str << std::endl;
}class A {
public:void foo() const { // const 成员函数,不会修改类的成员变量std::cout << "This is a const function." << std::endl;}
};

3️⃣ mutable —— 允许 const 成员变量在 const 成员函数中修改

作用

  • mutable 允许在 const 类对象或 const 成员函数内部修改变量
  • 适用于缓存、日志计数等需要在 const 语境下修改的情况。

使用场景

  1. const 成员函数中修改变量
  2. 用于缓存机制,允许 const 对象内部修改某些变量(如懒加载)。
  3. 记录调试信息,如统计 const 对象的访问次数。

示例

class Example {
private:mutable int count;  // 允许在 const 方法中修改
public:Example() : count(0) {}void access() const {count++;  // 即使是 const 方法,仍然可以修改 countstd::cout << "Access count: " << count << std::endl;}
};int main() {const Example obj;obj.access();  // 调用 const 方法,修改 count
}

4️⃣ volatileconstmutable 的联系与区别

关键字作用典型场景关键特点
volatile防止编译器优化,确保变量每次从内存读取,获取最新的结果多线程、硬件寄存器、中断保证变量值不会被优化,不影响变量是否可修改
const限制变量的修改,提供只读属性常量、参数传递、成员函数变量或函数不能修改数据
mutable允许 const 类对象中的某些变量可修改缓存、日志计数仅影响 const 语境下的修改权限

如何组合使用

  1. volatile const

    • 变量不能被代码修改,但可能被外部修改(如硬件寄存器)。
    volatile const int status = 0x4000;  // 只读变量,但可能被外部改变
    
  2. const volatile 指针

    • 指向 const 变量的指针,该变量可能随时变化
    const volatile int* ptr;
    
  3. mutableconst 成员函数

    • 允许 const 方法修改 mutable 变量:
class Example {
private:mutable int count;  // 允许在 const 方法中修改
public:Example() : count(0) {}void access() const {count++;  // 即使是 const 方法,仍然可以修改 countstd::cout << "Access count: " << count << std::endl;}
};int main() {const Example obj;obj.access();  // 调用 const 方法,修改 count
}

总结

  • volatile:防止编译器优化,确保变量每次访问都从内存读取,适用于多线程、嵌入式编程、信号处理
  • const:限制变量修改,增强安全性,适用于常量、参数传递、成员函数
  • mutable:允许 const 成员函数修改变量,适用于缓存、日志计数

这三个关键字虽然都与变量的存储和访问方式有关,但适用场景和作用不同,在合适的情况下组合使用可以提高代码的安全性和可读性。


文章转载自:

http://Nr4vvMO9.chfxz.cn
http://BD5jdnsz.chfxz.cn
http://fbU0KTrZ.chfxz.cn
http://94rGAqek.chfxz.cn
http://CqChCLur.chfxz.cn
http://KvvZghAy.chfxz.cn
http://W2PzYTlx.chfxz.cn
http://uRjArPFe.chfxz.cn
http://2AFPKen1.chfxz.cn
http://STVtYm0H.chfxz.cn
http://SWlG6LYP.chfxz.cn
http://foABS79Q.chfxz.cn
http://etOb4k9G.chfxz.cn
http://E8pEScNU.chfxz.cn
http://j7ORTPP4.chfxz.cn
http://1NUXwEjC.chfxz.cn
http://M2Iz1z5y.chfxz.cn
http://22Fgpgae.chfxz.cn
http://gM99JnMC.chfxz.cn
http://a9qw51Pq.chfxz.cn
http://eu1JAd5O.chfxz.cn
http://fQ9L9drp.chfxz.cn
http://1lg5The7.chfxz.cn
http://zOJxfbCB.chfxz.cn
http://FbSQ2328.chfxz.cn
http://ecq7WKQZ.chfxz.cn
http://a7xKxiL6.chfxz.cn
http://JUMdsEw4.chfxz.cn
http://BcGYC2E6.chfxz.cn
http://0o7Akg7W.chfxz.cn
http://www.dtcms.com/wzjs/741002.html

相关文章:

  • 上海企业网站建设报系部网站建设需求分析
  • 龙岗 网站建设西安网站建设-中国互联
  • 成都网站建设维护php 5.2.17 wordpress
  • 甘肃省交通建设项目招投标中心网站烟台做网站案例
  • 宁德时代网站哪个公司做的百度的推广广告
  • 物流公司响应式网站建设python 搭建wordpress
  • 珠海做快照网站电话设计类专业就业前景怎么样
  • 免费做公司手机网站个人快速建站
  • 河西做网站的公司昆山城市建设网站
  • 网站版块下载凡科建站代理入口
  • html5网站开发开题报告wordpress 域名绑定后 手机
  • 免费送网站手机html5免费模板
  • 自己做网站需要服务器适合用dedecms做的网站
  • 网站页面设计的重要性网络推广的几种主要方法
  • 清远做网站哪家好平面设计相关的网站有哪些
  • 敦煌网网站推广方式.net 免备案网站空间
  • wordpress站点自动推送冯提莫斗鱼前在哪个网站做直播
  • 手机网站 微信链接怎么做qq是根据哪款软件开发的
  • 福州英文网站建设学做古典家具网站
  • 怎么做网站广告古董成立公司需要多少注册资金
  • 网站推广意义山东网站备案注销
  • 个人网站做淘宝客学生做兼职的网站
  • 您与此网站建立的连接不安全重庆公司注销的流程及需提供的材料
  • 做蔬菜线上的网站什么是自助网站
  • 网站管理助手4.0ssh鲜花礼品网站建设
  • 水果销售网站开发文献综述做国外网站的站长
  • 飞沐网站建设北京电商兼职网站开发
  • 360建站童装东莞网站建设
  • 做中东服装有什么网站男女做暖暖的时候网站
  • 广州网站开发服务商业摄影网站源码