大家好,我是IT文藝男,來自一線大廠的一執行緒式員
上節視頻給大家講解了Qt信號槽的Qt宏展開推導;今天接著深入分析,進入Qt信號槽原始碼剖析系列的第三節視頻,
Qt信號槽宏推導歸納
#define signals public
#define slots
#define Q_OBJECT \
public: \
static const QMetaObject staticMetaObject; \
virtual const QMetaObject *metaObject() const; \
virtual void *qt_metacast(const char *); \
virtual int qt_metacall(QMetaObject::Call, int, void **); \
QT_TR_FUNCTIONS \
private: \
Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **);
#define emit
#define SIGNAL(a) "2"#a
#define SLOT(a) "1"#a
如何查看預處理之后的代碼
在Visual Studio中按如下操作查看預處理之后的代碼::
- 右鍵工程【屬性】選單,彈出屬性頁對話框
- 依次單擊【配置屬性】-->【C/C++】-->【前處理器】
- 設定【預處理到檔案】選項值為“是”
- 工程編譯

預處理之后代碼與初始代碼對比
Counter類宣告對比

Counter類定義對比

main函式對比

因此,上述分析一目了然,理論推導與實踐結果是高度一致的;
今天就講解到這里,更詳細的原理分析與講解,請關注微信公眾號(itwenyinan),觀看對應的的視頻版講解;謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/277609.html
標籤:C++
上一篇:類的建構式學習筆記:顯式呼叫建構式生成臨時物件,拷貝建構式
下一篇:什么是“約定大于配置”
