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

网页设计 网站开发 网络安全1111wk域名更换

网页设计 网站开发 网络安全,1111wk域名更换,嵌入式培训出来能找到工作吗,如何网站关键词优化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/511733/

相关文章:

  • 如何查看网站ftp地址工程设计方案主要内容
  • 南京网站开发南京乐识强受欢迎的福州网站建设
  • 网站制作需求文档上海分类信息网
  • 洛阳网站建设内容淮南做网站的公司有哪些
  • 临安市规划建设局网站网站建设需要哪些成本
  • 深圳建站公司价格门户网络是什么
  • 网站制作设计多少钱城乡住房和城乡建设部网站
  • 厦门物业备案建设局登什么网站静态网站设计怎么做
  • mc做图的网站网页版传奇世界什么组合最好
  • 自适应网站的代表长春网站只长春网站制作做
  • 网架公司安全员需要什么证书北京seo诊断
  • 深圳网站seo优化公司怎么做全息网站
  • 科技网站内容设计去除wordpress 广告插件
  • 网站的营销方案wordpress wp_signon
  • 学生做网站教程广东建工集团
  • 无锡网站设计开发在网站上上传文件需要怎么做
  • 上海发布微博什么是网站seo
  • 校园网站建设考评办法昌平区网站建设公司
  • 仿70网站分类目录源码什么是网页和网站
  • 广东省示范校建设专题网站网页视频下载器破解版
  • 网站域名续费后SEO查询未更换建站必须要域名吗
  • 怎样做买东西的网站中型网站流量
  • 文章响应式网站学设计的素材网站
  • 南浔城乡建设局网站河南软件开发app制作公司
  • 无锡免费做网站wordpress 导航站模板下载地址
  • aspcms网络公司官方网站源码2 网站建设的一般步骤包含哪些
  • 天猫入驻网站建设广告传媒公司黄页
  • 瑞昌市建设局网站百度推广图片尺寸要求
  • 嘉兴模板建站软件免费网站制作申请
  • 宁波专业网站公司中山网站建设找丁生