Qt : d指针和q指针?

本文介绍了Qt中d指针和q指针的概念,作用以及它们在保证二进制兼容性、隐藏实现细节和提高编译速度方面的应用。通过示例代码展示了d指针和q指针的使用方法。
摘要由CSDN通过智能技术生成

目录

 

一、什么是d指针和q指针

 1、d指针

2、q 指针 

二、d指针和q指针的作用

三、d指针和q指针的使用 demo


一、什么是d指针和q指针

在Qt的源码中,我们看到大量的Q_D() 和Q_P() 宏的调用,查看代码时在一定程度上增加了复杂度。先看看两个宏的原型:

#define Q_D(Class) Class##Private * const d = d_func() 
#define Q_Q(Class) Class * const q = q_func()          

通过调用Q_D 和Q_Q 宏,我们就得到了大名鼎鼎的d指针和q指针。

 

 1、d指针

#define Q_DECLARE_PRIVATE(Class) \
 inline Class##Private* d_func() { return reinterpret_cast<Class##Private *>(qGetPtrHelper(d_ptr)); } \
 inline const Class##Private* d_func() const { return reinterpret_cast<const Class##Private *>(qGetPtrHelper(d_ptr)); } \
 friend
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

键盘会跳舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值