栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Qt的D和Q指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Qt的D和Q指针

Qt的D指针和Q指针,实际上就是一个类的成员指针变量,改变量指向另一个Private类对象,这个Private类对象中包含了一系列的成员和函数。

这样做的目的:1.可以对外隐藏数据内容。2. 防止改变类的数据模型,从而做到二进制兼容。

Q_DECLARE_PUBLIC提供一个q_func q_ptr Q_Q,一般是在XXXPrivate类中使用,需要自己声明 XXX* q_ptr
Q_DECLARE_PRIVATE提供一个d_func d_ptr Q_D,一般是在XXX类中使用,需要自己声明XXXPrivate* d_ptr
Q_DECLARE_PRIVATE_D同上,然后声明XXXPrivate* 任意名称;

D指针的具体实现宏 

define Q_DECLARE_PRIVATE(Class) 
  inline Class##Private* d_func() {return d_ptr;}
friend class Class##Private;	

#define Q_DECLARE_PRIVATE_D(Dptr, Class) 
 inline Class##Private* d_func(){return Dptr;} 
 friend class Class##Private;
 
#define Q_DECLARE_PUBLIC(Class)                                    
    inline Class* q_func() { return static_cast(q_ptr); } 
    inline const Class* q_func() const { return static_cast(q_ptr); } 
    friend class Class;

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

d_ptr  q_ptr

而Q指针,实际上就是在Private类中的指针,就是指向那个暴露给用户的类。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号