Qt中無處不在的d指標為何方神聖

2021-08-15 19:50:27 字數 935 閱讀 1050

#ifndef qt_no_qobject

: public qobject

#endif

;上面的**中出現了乙個紅「q_declare_private」,接下來看看這個巨集的作用。

template static inline t *qgetptrhelper(t *ptr) 

#define q_declare_private(class) \

inline class##private* d_func() \

inline const class##private* d_func() const \

friend class class##private;

發現這個展開後引入了d_func()這個函式。但是「d指標」和這個巨集又有什麼關係呢?那就要說到另乙個巨集「q_d」看如下的**:

#define q_d(class) class##private * const d = d_func()
從**中可知,d_func()和d指標是緊密聯絡的。在qt原始碼中「d_func()函式」和「d指標」的使用無處不在!

在接下的過程中又發現了另一組巨集「q_declare_public、q_q」,**如下:

#define q_declare_public(class)                                    \

inline class* q_func() \

inline const class* q_func() const \

friend class class;

#define q_q(class) class * const q = q_func()

這組巨集引入了「q_func()函式」和「q指標」,這兩個在qt**中遇見較少,留待以後研究。

無處不在的NFC

長期以來,nfc技術處於左右為難或先有雞還是先有蛋的窘境之中。在無產品支援的情況下,製造商為什麼要在手機中採用nfc,反之,當製造商在手機中採用nfc時,為什麼無產品支援?值得慶幸的是,這樣的日子已經一去不復返了,如今已有5億多部支援nfc的高階智慧型手機投入使用,此問題已得到妥善解決。nfc手機正...

無處不在的分析能力

好長時間沒寫部落格了,不是沒有時間,而是堅持的還不夠。今天遇到乙個問題,想寫出來和大家分享。昨天晚上寫到category這個頁面。主要是把類別新增到資料庫中,和從資料庫中拿出後樹狀展示。涉及的知識倒是不多,也就是判斷 迭代等。但是我從昨晚寫,知道今天中午5點才搞定。中間花費了差不多4個小時左右時間來...

無處不在的日期類

所有的類,我們已經寫到目前為止已經足夠簡單,我們已經能夠實現的功能,直接在類本身的定義。例如,我們無處不在的 日期類 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 classdate private defa...