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

做的比较好的卡车网站百度推广怎么推广

做的比较好的卡车网站,百度推广怎么推广,哈尔滨网站建设乙薇,京东页面网页设计与制作实训报告Qt 中的 d-pointer 与 p-pointer: PIMPL 惯用法解析 在 Qt 库中,尤其是在其核心类和模块中,广泛使用了 PIMPL (Pointer to IMPLementation,指向实现的指针) 的编程惯用法。这种模式通过一对指针来实现:d-pointer (d_p…

Qt 中的 d-pointer 与 p-pointer:

PIMPL 惯用法解析
在 Qt 库中,尤其是在其核心类和模块中,广泛使用了 PIMPL (Pointer to IMPLementation,指向实现的指针) 的编程惯用法。这种模式通过一对指针来实现:d-pointer (d_ptr) 和 p-pointer (q_ptr)。
1. PIMPL (Pointer to IMPLementation) 惯用法
目的: 将类的公共接口与其私有实现细节分离开来。
主要优点:
(1)减少编译依赖: 公共类的头文件只需要包含私有实现类的前向声明,而无需包含其完整的定义以及私有实现所依赖的其他头文件。当私有实现发生变化时,只需要重新编译私有实现文件,而包含公共类头文件的其他源文件无需重新编译,显著减少了大型项目的编译时间。
(2)隐藏实现细节: 提高了类的封装性,用户只能看到公共接口,无法直接访问私有成员。
(3)ABI 兼容性: 在不改变公共类布局(即其成员变量的内存偏移和大小)的情况下,可以修改私有实现类的内部结构。这对于构建二进制兼容的库非常重要,允许库的维护者在不强制用户重新编译使用该库的所有代码的情况下发布更新。
2. d-pointer (数据指针)
定义: 通常是公共类中的一个指针成员(在 Qt 中通常命名为 d_ptr),它指向一个包含所有私有成员和私有函数的单独的类(私有实现类)。
作用: 公共类通过 d_ptr 来访问和调用私有实现类中的实际逻辑和数据。它是从公共接口到私有实现的桥梁。
声明: 在 Qt 中,使用 Q_DECLARE_PRIVATE(ClassName) 宏在公共类的头文件中声明 d-pointer,并完成私有实现类的必要前向声明。
示例 (简化概念):

    // MyClass.h (公共接口)class MyClassPrivate; // 前向声明私有实现类class MyClass {// ... 公共成员和函数 ...private:MyClassPrivate* d_ptr; // d-pointer 指向私有实现Q_DECLARE_PRIVATE(MyClass) // Qt 宏,声明 d-pointer};// MyClass_p.h (私有实现 - 通常不对外公开)#include "MyClass.h" // 需要包含公共类头文件class MyClassPrivate {// ... 私有数据成员 ...// ... 私有实现函数 ...MyClass* q_ptr; // p-pointer 指回公共类Q_DECLARE_PUBLIC(MyClass) // Qt 宏,声明 q_ptr};// MyClass.cpp (实现文件)#include "MyClass_p.h" // 包含私有实现头文件// ... MyClass 公共函数的实现,通过 d_ptr 访问私有实现 ...

3. p-pointer (公共指针)
定义: 通常是私有实现类中的一个指针成员(在 Qt 中通常命名为 q_ptr),它指回创建该私有实现对象的那个公共类实例。
作用: 允许私有实现类中的代码方便地调用公共类中的公共(或保护)函数,或者访问公共(或保护)成员。它是从私有实现到公共接口的桥梁。
声明: 在 Qt 中,使用 Q_DECLARE_PUBLIC(ClassName) 宏在私有实现类的头文件中声明 p-pointer。
示例 (承接上文,简化概念):

    // MyClass.cpp (实现文件)#include "MyClass_p.h"// 私有实现函数示例void MyClassPrivate::somePrivateFunction() {Q_UNUSED(d_ptr); // 在私有实现中很少直接用 d_ptr// 通过 q_ptr 调用公共类的方法q_ptr->somePublicMethod();}// ... 公共函数的实现 ...

d-pointer 与 p-pointer 的核心区别与联系

特性d-pointer (d_ptr)p-pointer (q_ptr)
方向公共类 -> 私有实现类私有实现类 -> 公共类
所在类公共类 (Public Class)私有实现类 (Private Implementation Class)
主要作用隐藏实现细节,减少编译依赖,实现 PIMPL允许私有实现访问其对应的公共接口
声明宏Q_DECLARE_PRIVATE(ClassName)Q_DECLARE_PUBLIC(ClassName)
它们通常是成对出现的。d-pointer 建立了从公共接口到隐藏实现的连接,而 p-pointer 则提供了从实现返回到公共接口的便利途径,使得私有实现能够方便地与公共类进行交互。
总结
d-pointer 和 p-pointer 是 Qt 实现 PIMPL 惯用法的重要组成部分。d-pointer 负责将私有实现隐藏起来以优化编译时间和维护 ABI 兼容性,而 p-pointer 则为私有实现提供了访问其对应公共类的能力。理解这对指针对于深入理解 Qt 类的内部工作机制非常有帮助。
http://www.dtcms.com/wzjs/470168.html

相关文章:

  • 聊城建网站哪家好系统优化软件推荐
  • 重庆八大员证书查询网站营销公司排行
  • 政府网站建设方案书百度搜索引擎怎么做
  • 学校网站建设实训总结怎么建立一个属于自己的网站
  • 博物馆网站微信公众号建设关键词排名seo优化
  • 天津飞机模型制作公司上海网络排名优化
  • 设计高端的国外网站图片外链在线生成网址
  • 太原市建设银行网站首页百度一下你就知道了 官网
  • 电商网站怎么建设头条站长平台
  • 郑州网站seo多少钱产品推广软文500字
  • 做 爱 网站小视频下载web个人网站设计代码
  • 傻瓜式网站源码百度营消 营销推广
  • 深圳做网站哪个公司最好网络广告投放网站
  • 上海整形网站建设东莞网站seo技术
  • 单仁资讯做网站怎样十大禁止安装应用入口
  • 个人网站建设软件百度首页排名怎么做到
  • Java网站开发中国知网参考文献seo分析报告怎么写
  • 专业的个人网站建设哪家西安seo关键字优化
  • 建设食品网站的目的巨量引擎官网
  • 如何刷网站排名合肥瑶海区房价
  • 天长网站建设天长东莞搜索排名提升
  • 婚恋网站 没法做班级优化大师使用心得
  • 东莞微信网站建设怎样广州seo效果
  • 北京做网站制作的公司自己做一个网站要多少钱
  • 在网站中加入锚链接应该怎么做怎样提高百度推广排名
  • 信息网站怎么做打开百度一下你就知道
  • 做导购网站用什么样的主机电商运营seo
  • 销售方案网站百度知道app
  • 防盗网站人做清洁企业网
  • 深圳宝安做网站网页制作免费模板