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

logo是个网站如何创建网站站点

logo是个网站,如何创建网站站点,表白墙网站怎么做,金融行业网站建设方案文章目录 条款 11:在 operator 中处理“自我赋值”核心问题示例:使用地址比较示例:copy-and-swap 技术设计建议总结 条款 11:在 operator 中处理“自我赋值” 核心问题 自我赋值风险 如果赋值操作符没有处理自我赋值(…

文章目录

    • 条款 11:在 `operator=` 中处理“自我赋值”
      • 核心问题
      • 示例:使用地址比较
      • 示例:`copy-and-swap` 技术
      • 设计建议
      • 总结

条款 11:在 operator= 中处理“自我赋值”

核心问题

  • 自我赋值风险
    如果赋值操作符没有处理自我赋值(a = a),可能会导致未定义行为,如内存泄漏或数据损坏。

  • 检查方法
    operator= 中处理自我赋值的常见技术包括:

    1. 比较源对象和目标对象的地址。
    2. 使用 copy-and-swap 技术。

示例:使用地址比较

通过检查对象地址来处理自我赋值:

class Bitmap { ... };class Widget {
private:Bitmap* pb;  // 指针,指向一个从堆分配的对象public:Widget& operator=(const Widget& rhs) {if (this == &rhs) return *this;  // 检查自我赋值Bitmap* pOrig = pb;             // 记住原先的 pbpb = new Bitmap(*rhs.pb);       // 为 rhs.pb 分配新内存并复制delete pOrig;                   // 释放原先的内存return *this;}
};

关键点:

  1. 通过 if (this == &rhs) 检查自我赋值。
  2. 延迟删除原数据,确保新数据分配成功后再清理旧数据。

示例:copy-and-swap 技术

通过复制源对象并交换数据,可以简化逻辑并避免自我赋值问题:

class Widget {
private:Bitmap* pb;  // 指针,指向一个从堆分配的对象public:void swap(Widget& rhs) {  // 交换 *this 和 rhs 的数据std::swap(pb, rhs.pb);}Widget& operator=(const Widget& rhs) {Widget temp(rhs);  // 创建 rhs 的副本swap(temp);        // 交换副本和当前对象的数据return *this;}
};

关键点:

  1. copy-and-swap 自动处理自我赋值,因为副本创建在交换之前完成。
  2. 保证异常安全性:即使复制过程抛出异常,当前对象的状态仍然未被修改。

设计建议

  1. 自我赋值检查

    • 使用 if (this == &rhs) 明确检查。
    • 或采用 copy-and-swap 技术隐式避免自我赋值。
  2. 异常安全性

    • 在修改现有数据之前完成所有可能失败的操作(如动态分配内存)。
  3. 效率与灵活性

    • 对于简单类,直接地址比较可能更高效。
    • 对于复杂类,copy-and-swap 提供更高的代码复用性和易读性。

总结

  • 自我赋值是一种特殊情况,必须在 operator= 中妥善处理。
  • 可以通过地址比较和 copy-and-swap 技术来解决这一问题。
  • 采用合理的实现方式,确保代码的安全性、可维护性和异常处理能力。
http://www.ds6.com.cn/news/14171.html

相关文章:

  • 如何用手机做网站吗在线培训管理系统
  • 网站目录权限设置百度搜索风云榜电脑版
  • 做文案图片上什么网站网络推广的优势
  • 齐齐哈尔哪里做网站免费b站在线观看人数在哪
  • 有服务器可以做网站吗病毒什么时候才能消失
  • WordPress網站放ICP一周热点新闻
  • 网站广告投放价格表优化排名工具
  • 在线网站做成app高级搜索引擎
  • 海淀周边网站建设百度广告费
  • 佛山专业做企业网站网络营销有哪些功能
  • 网站代备案长春网站建设公司哪家好
  • 怎样下载网站模板网络推广哪家做得比较好
  • 消防做设计有什么网站长沙百度网站推广优化
  • 如何搭建php网站企业网络推广方法
  • 企业在线设计网站百度ocpc如何优化
  • 国外域名注册哪个便宜seo的作用主要有
  • 中国建设银行浙江分行网站seo推广教程视频
  • 百度站内搜索提升关键词排名小程序设计
  • 网上商城互联网网站开发网站链接交易
  • 网络策划案seo站长工具下载
  • 做博客网站汽车网站建设
  • 能免费做网站宁波网站制作优化服务
  • 境外网站icp备案申请表web网址
  • 腾讯云服务器网站域名备案怎么做百度推广平台
  • 怎么做不花钱的网站seo软件哪个好
  • 融资网站建设重点网络营销方式方法
  • java实现大型门户网站开发经验搜狗推广效果好吗
  • 有教做路桥质检资料的网站吗点金推广优化公司
  • 网站后台登陆显示验证码错误上海疫情最新数据
  • 网站建设的一般流程排序为长沙百度网站排名优化