QObject源码中如何体现其间接设计思想?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1958个文字,预计阅读时间需要8分钟。
这篇文章介绍了在QT框架中,QT对象类型(QObject)及其源代码在设计中体现的一个较为优秀的理念。以下是简化的内容:
QT框架中的QObject类型及其源代码设计理念具有以下特点:
1. QObjective类型定义:直接查看QObject的源代码。
2.设计理念:为了表达简洁直观,采用直接观察的方式。
这一篇文章介绍QT框架中QT对象类型也就是QObject类型的源代码在设计上的一个比较优秀的设计思想。
1.QObject类型定义 QObject直接来看QObject的源代码。为了表达更简洁更直观,这里省略了跟本文无关的各种代码。
如果查看QObject类型定义,可以发现类型里面有很多成员函数,但是除了 d_ptr之外,就没有定义更多的成员变量。当然,没有定义更多成员变量并不等于QObject对象实例中就只有d_ptr这一个数据,实际上由于QObject中定义了虚函数,因此QObject对象实例中还有vptr,也就是指向虚函数表的指针。
现在让我们来讨论这么一个问题,QObject肯定是有内部状态数据的,那么内部状态数据保存在哪儿呢?实际上就是保存在d_ptr指向的QT对象数据对象实例中。d_ptr是QT中的一个范围指针,也就是说当QObject对象被销毁时,使得d_ptr指向的QT对象数据对象实例也会被销毁掉。
QObjectData先来看QObjectData类型定义。
本文共计1958个文字,预计阅读时间需要8分钟。
这篇文章介绍了在QT框架中,QT对象类型(QObject)及其源代码在设计中体现的一个较为优秀的理念。以下是简化的内容:
QT框架中的QObject类型及其源代码设计理念具有以下特点:
1. QObjective类型定义:直接查看QObject的源代码。
2.设计理念:为了表达简洁直观,采用直接观察的方式。
这一篇文章介绍QT框架中QT对象类型也就是QObject类型的源代码在设计上的一个比较优秀的设计思想。
1.QObject类型定义 QObject直接来看QObject的源代码。为了表达更简洁更直观,这里省略了跟本文无关的各种代码。
如果查看QObject类型定义,可以发现类型里面有很多成员函数,但是除了 d_ptr之外,就没有定义更多的成员变量。当然,没有定义更多成员变量并不等于QObject对象实例中就只有d_ptr这一个数据,实际上由于QObject中定义了虚函数,因此QObject对象实例中还有vptr,也就是指向虚函数表的指针。
现在让我们来讨论这么一个问题,QObject肯定是有内部状态数据的,那么内部状态数据保存在哪儿呢?实际上就是保存在d_ptr指向的QT对象数据对象实例中。d_ptr是QT中的一个范围指针,也就是说当QObject对象被销毁时,使得d_ptr指向的QT对象数据对象实例也会被销毁掉。
QObjectData先来看QObjectData类型定义。

