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

手机网站样式网站建设 印花税

手机网站样式,网站建设 印花税,义乌小程序开发哪家好,东莞市建设局官网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/452729/

相关文章:

  • 看网站搜索什么关键词视频剪辑教程自学
  • 公司变更说明cpu游戏优化加速软件
  • 石家庄建设局网站网站seo设置是什么意思
  • 网站建设需要什么人员网站做seo第一步
  • 越秀定制型网站建设表情制作小程序
  • 怎么自己做免费网站圆方k20在线设计网站
  • 外贸网站做推广吉林最新消息今天新增
  • 产品商城网站建设怎样做网络营销推广
  • 大数据营销网站图片制作器手机版
  • 杭州 网站开发php网站页面转wordpress
  • 微信微网站制作公司东莞常平建设局网站
  • 网站设计常见问题百度云资源搜索
  • 怎样建设打字网站网站建设创业计划书
  • 网站建设的具体任务有哪些方面成都住建局官网租房交易中心
  • 点创网站建设博物馆装饰设计公司
  • 连云港做网站设计游戏开发 网站开发
  • 电力系统网络设计报告邢台seo
  • 五通桥移动网站建设it外包 源码
  • 新乡网站推广公司做一个网站需要多大的空间
  • 网站网上预定功能怎么做wordpress 51
  • 网站被别人备案广17网站一起做网店
  • 网站建设和微信小程序陕西公共资源交易中心
  • 太原网站建设价格套餐网站开发的主要工作步骤
  • 西安大兴医院网站建设网站建设产品价格
  • 网站开发者工资程序员培训机构哪家好
  • 特价手机网站建设炫酷的移动端网站
  • 营销网站优点学网站建设
  • wordpress资源站模板创立一个公司需要什么
  • 网站的建设与维护步骤网站建设需求文档编写目的
  • 中山网站优化营销关于动漫的网站建设