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

做网站平台的公司包装盒设计

做网站平台的公司,包装盒设计,代表网站开发的logo,网络公司 给 客户网站备案C PIMPL 编程技巧 文章目录 C PIMPL 编程技巧什么是pimpl?pimpl优点举例实现 什么是pimpl? Pimpl (Pointer to Implementation) 是一种常见的 C 设计模式,用于隐藏类的实现细节,从而减少编译依赖和提高编译速度。它的基本思想是将…

C++ PIMPL 编程技巧

文章目录

  • C++ PIMPL 编程技巧
    • 什么是pimpl?
    • pimpl优点
    • 举例实现

什么是pimpl?

Pimpl (Pointer to Implementation) 是一种常见的 C++ 设计模式,用于隐藏类的实现细节,从而减少编译依赖和提高编译速度。它的基本思想是将一个外部可见类 (visible class) 的实现细节(一般是所有私有的非虚成员)放在一个单独的实现类 (implementation class) 中,而在可见类中通过一个私有指针来间接访问该实现类。这种技术用于构建具有稳定 ABI 的 C++ 库接口并减少编译时间依赖。

pimpl优点

  • 接口和实现分离
  • 减少头文件依赖
  • 提高编译速度

举例实现

比如说我有一个Producer的对外接口:
文件如下:

producer.h  //对外
producer.cc
producer_impl.h // 具体实现
producer_impl.cc // 具体实现

头文件producer.h对外。

producer.h

#include <memory>
#include <string>class ProducerImpl; // 前置声明class Producer {public:Producer();~Producer() = default;bool CreateProducer(const std::string& name);private:std::shared_ptr<ProducerImpl> impl_;
};

producer.cc

#include "producer.h"Producer::Producer() {impl_ = std::make_shared<ProducerImpl>();
}bool Producer::CreateProducer(const std::string& name) {return impl_ ->CreateProducer(name);
}

producer_impl.h

#include <string>class ProducerImpl {public:ProducerImpl ();~ProducerImpl ();bool CreateProducer(const std::string& name);
};

producer_impl.cc

#include "producer_impl.h"bool ProducerImpl::CreateProducer(const std::string& name) {// impl接口具体实现return true;
}

通过如上示例,外部用户只需包含 producer.h即可,内部实现均在impl中实现,后续如果修改也只是修改impl中的内容,并不会动对外接口。

当然最好是配合 attribute((visibility(“default”))) 来使用。attribute((visibility(“default”))) 是 GCC 编译器的一个属性,用于控制符号的可见性。它可以用来指定一个符号在动态链接时是否可见。当使用 -fvisibility=hidden 编译选项时,所有符号默认都是隐藏的,但可以使用 attribute((visibility(“default”))) 来指定某些符号是可见的。这样,可以减少动态链接库中不必要的符号,提高加载速度和运行速度。

比如上面几个文件 可以按照如下文件夹来排布:

include/producer.h
src/producer.cc
src/producer_impl.h
src/producer_impl.cc

并配合__attribute__((visibility(“default”))) 使用只将producer.h对外可见。

http://www.yayakq.cn/news/862445/

相关文章:

  • 青柠海报设计网站韩国个人主网页设计培训
  • 网站热力图怎么做国家工商注册网官网
  • 国内做新闻比较好的网站织梦免费网站模块下载地址
  • 商务网站建设平台手表网站推荐
  • 网站建站行业公司主页建设宿迁大型三合一网站开发
  • 西安营销型网站自己建站网站
  • 司法局网站建设方案公司企业模板wordpress模板
  • c 微信网站开发图书馆网站建设方案设计论文
  • 市住房和城乡建设局网站大连金融理财网站源码
  • 公司找网站做宣传做账广告公司简介模板100字
  • 宠物网站建设报告网站建设与维护期末试卷
  • 有哪些专门做减肥内容的网站邢台市网站建设
  • 专做负面的网站官方网站投诉平台
  • 怎么才能自己做网站网站建设费走什么科目
  • 金花站长工具做app公司
  • 苏州吴江做网站好的网站推荐下 感谢
  • 精通网站建设 全能建站密码pdf查域名服务器地址
  • 网站建设的功能和目标wordpress站点用户注册
  • ip开源网站FPGA可以做点什么游戏中心官网
  • 淮北建设银行官方网站汇泽网站建设
  • 公司网页制作哪家好网络seo关键词优化技术
  • 网站开发建设方案做网站优化公司
  • 网站建设策划书的基本格式网站欢迎页模板
  • 山东省威海市文登区建设局网站游网站建设方案内容
  • 做门户网站用什么技术好网站建设营销怎么做
  • 网站建设客户人群网站公司模板
  • 男和男做那个视频网站互联网信息投诉平台入口
  • 卖表网站源码提供五屏网站建设
  • 谷歌网站建设windows10PHP 网站建设
  • 有什么可以做推广的软件wp博客seo插件