如题,为什么“q_ptr”指针被赋值给QObject的“this”指针?在源代码中。
QObject::QObject(QObjectPrivate &dd, QObject *parent)
: d_ptr(&dd)
{
>>Q_D(QObject);
>>d_ptr->q_ptr = this;/*question*/
.......
然后,当Q_Q()
在源代码中使用宏时,如吹:
Q_Q(QWidget)
它将返回由函数 q_fun() 处理的 q 指针:
QWidget*q_func() {return static_cast<QWidget*>(q_ptr);}
众所周知,static_cast
从父母传给孩子是不安全的。
我很沮丧/*question*/
,有人能告诉我这个秘密吗?谢谢!