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

营口规划建设局网站本溪做网站

营口规划建设局网站,本溪做网站,绍兴做网站鼎成,小游戏网站欣赏一:概述 C 的类布局(尤其是私有成员变量)直接影响它的 ABI(应用二进制接口)。如果你在类中添加或修改了私有成员,即使接口不变,编译器生成的二进制布局也会变,从而导致 ABI 不兼容。…

一:概述

        C++ 的类布局(尤其是私有成员变量)直接影响它的 ABI(应用二进制接口)。如果你在类中添加或修改了私有成员,即使接口不变,编译器生成的二进制布局也会变,从而导致 ABI 不兼容。这意味着使用这个类的代码需要重新编译,严重破坏了库的二进制兼容性。为避免这种情况,Pimpl(Pointer to Implementation) 模式应运而生。

二:Pimpl 模式介绍

        Pimpl将类的实际实现细节封装在另一个类中(impl),对外只暴露一个指向实现的智能指针(如 std::unique_ptr<impl>)。这样你可以随意修改实现类而不会影响主类的 ABI,因为指针大小在所有平台都是固定的。

三:代码示例

        widget.h 为对外公开的接口文件:

class widget {class impl; // 前向声明实现类std::unique_ptr<impl> pimpl; // 指向实现的指针public:void draw();       // 接口函数,转发到实现widget(int);       // 构造函数:传参数给实现~widget();         // 析构函数:释放实现widget(widget&&) noexcept;widget(const widget&) = delete;widget& operator=(widget&&) noexcept;widget& operator=(const widget&) = delete;
};

        widget.cpp 为实现细节,隐藏在此文件中:

class widget::impl {int n;  // 实际的成员变量
public:void draw(const widget& w) { /* ... */ }impl(int n) : n(n) {}
};

        用户视角:

widget w(42);   // 实际构造 impl(42)
w.draw();       // 实际转发给 impl->draw()

 四:总结

       我们可以把这个规则理解为:将实现藏进“黑匣子”,只留遥控器给别人用。

http://www.dtcms.com/wzjs/827474.html

相关文章:

  • 网站后台是怎么做出来的贵州网站建设价格
  • 网站建设的方式有哪些ico网站进行推广
  • 如何查询一个网站的空间大小成立
  • 地方房地产网站网站改自适应 做自适应
  • 一般网站建设多少钱便宜的网站好吗抚顺网站建设7113
  • 永康网站建设优化建站自己可以做类似拓者的网站吗
  • 做网站标题居中代码广州公司注册官网
  • 做娱乐网站被坑青海媒体网站建设公司
  • 自做网站的步骤wordpress文章采集器
  • 企业网站的分类有哪三种logo在线制作免费网站
  • 六盘水网站建设wordpress 文章跳转
  • 台州网站建设模板磁力搜索器
  • 网站注册信息查询免费wordpress申请
  • 新的网站后台不显示网站栏目长沙市建设厅网站
  • 《网站建设 补充合同厂家招总代理
  • 门户网站是以什么为主如何创建目录wordpress
  • 做网站得做多少网页网页设计作业古诗
  • 福建省建设注册执业资格管理中心网站wordpress下滑显示导航
  • 建设部网站查询注册岩土工程师网站服务器失去响应什么意思
  • 龙岩网站建设行情在工商局网站怎么做清算
  • 大型小说网站开发语言个人 邮箱 含网站 域名
  • 三亚网站开发南山网站公司定
  • 天津网络优化网站建设织梦建网站
  • 网站seo是干什么的建设文明网站包括哪些内容
  • 金融网站建设网私人私密浏览器免费下载
  • 重庆忠县网站建设公司推荐网络搭建及应用技能大赛 试题与答案
  • 网站打不开 清理缓存后可以打开开封网站建设zducm
  • 主页导航网站建设定制网站服务器用来做啥
  • ps做网站首页怎么网站图片如何做链接
  • 海宁最火高端网站设计推荐网站优化知识