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

商河县做网站公司网络营销师资格证有什么用

商河县做网站公司,网络营销师资格证有什么用,织梦 帝国 wordpress,免费网站制作效果Effective C 条款03:尽可能使用const核心思想:const 是 C 中强大的语义约束工具,能帮助编译器侦测错误、提高代码可读性、并支持编译器优化。 1. 定义常量 const int MAX_SIZE 100; // 替换宏定义,类型安全 const std::strin…

Effective C++ 条款03:尽可能使用const


核心思想const 是 C++ 中强大的语义约束工具,能帮助编译器侦测错误、提高代码可读性、并支持编译器优化。

1. 定义常量
const int MAX_SIZE = 100;     // 替换宏定义,类型安全
const std::string NAME = "Alice";

2. 修饰指针
  • 指向常量的指针(底层 const

    const char* p = "Hello";  // 数据不可变
    // p[0] = 'X';            // 错误:禁止修改
    p = "World";              // 允许指向新地址
    
  • 常量指针(顶层 const

    char greeting[] = "Hello";
    char* const p = greeting;  // 指针不可变
    p[0] = 'X';                // 允许修改数据
    // p = greeting + 1;      // 错误:禁止修改指针
    

3. 修饰迭代器
std::vector<int> vec{1, 2, 3};
const std::vector<int>::iterator iter = vec.begin(); // 类似 T* const
*iter = 10;        // 允许修改数据
// iter++;          // 错误:迭代器不可移动std::vector<int>::const_iterator cIter = vec.cbegin(); // 类似 const T*
// *cIter = 20;     // 错误:数据不可修改
cIter++;           // 允许移动迭代器

4. 修饰函数参数与返回值
  • 参数:避免意外修改

    void print(const std::vector<int>& data) {// data.push_back(4);  // 错误:const引用禁止修改for (auto num : data) std::cout << num << " ";
    }
    
  • 返回值:防止误操作

    const int getMagicNumber() { return 42; }
    // getMagicNumber() = 0;  // 错误:返回值不可修改
    

5. const 成员函数
  • 核心作用

    • 标记不修改对象状态的成员函数。
    • 允许 const 对象调用。
  • 示例

    class TextBlock {char* pText;
    public:// const版本:供const对象调用const char& operator[](size_t pos) const {return pText[pos];  // 返回const引用}// 非const版本:供普通对象调用char& operator[](size_t pos) {return pText[pos];  // 返回非const引用}
    };void demo() {const TextBlock ctb("World");TextBlock tb("Hello");tb[0] = 'h';      // 正确:调用非const版本// ctb[0] = 'w';   // 错误:调用const版本,返回值不可修改
    }
    

6. mutable 突破 const 限制
class CachedData {
private:mutable int cache;      // 允许const成员函数修改bool cacheValid = false;
public:int getValue() const {if (!cacheValid) {cache = compute();  // 允许修改mutable成员cacheValid = true;}return cache;}int compute() const { /* ... */ }
};

关键总结

  1. 声明常量时优先使用 const 而非 #define
  2. 使用 const 指针/迭代器明确数据或指针的可变性。
  3. 函数参数传递时,对不改动的对象使用 const& 避免拷贝。
  4. 为不修改成员变量的函数添加 const 修饰符。
  5. 当成员变量需要在 const 函数中修改时,使用 mutable

重要提醒

  • const 成员函数的重载:根据调用对象的 const 性自动选择版本。
  • const 对象可调用 const 成员函数(反之不成立)。
http://www.dtcms.com/a/618988.html

相关文章:

  • 揭阳市住房和城乡建设局官方网站一天必赚100元的游戏
  • Python 常用库
  • 【 Java八股文面试 | Java集合 】
  • 青岛网站优化公司哪家好建网站 找个人
  • 网站建设售后服务网站推广排名
  • 线程控制块 (TCB) 与线程内核栈的内存布局关系
  • 现在最常用网站开发工具建设公司网站开发方案
  • 长春专业做网站公司排名discuz集成wordpress
  • 独立开发者的本质
  • 从“高密度占有”到“点状渗透”:论“开源AI智能名片链动2+1模式”在S2B2C商城小程序中的渠道革新
  • Goer-Docker系列-1-容器编排实操
  • 4.1 Agent开发热潮!基于LLM构建智能代理系统,未来人机交互的新范式
  • 设计模式实战篇(七):适配器模式 —— 让“不兼容的接口”优雅合作的万能转换器
  • 【Java 基础】5 面向对象 - 实体类
  • 波哥昆明网站建设平面设计的素材网站
  • 外贸网站推广收费自己做个网站好还是做别人会员好
  • MySQL---C/C++链接
  • 怎么进入微信官方网站汉字logo标志设计
  • 深入理解 Java Stream 流:函数式编程的优雅实践(全面进阶版)
  • 高端网站制作报价网站怎么做搜索
  • CSS Fonts(字体)
  • 莱芜手机网站设计公司网站上传到空间
  • skywalking整合logback.xml日志,日志文件出现乱码问题解决
  • 网站建设栏目添加收费电影网站怎么做
  • 【LwIP源码学习8】netbuf源码分析
  • 蓝牙EIR数据
  • 外企网站建设中国庆阳网
  • nfs共享服务
  • vue2[webpack]中接入vue3[vite]的qiankun微前端服务
  • Apache Hadoop-学习笔记1