比如有個Qtimer類timer,一個QMwidget類Mwidget,widget定義了一個animate方法,那么有以下幾種connect呼叫方式,且都測驗可用:
第一種:
connect(timer,timer->timeout,Mwidget,Mwidget->animate);
第二種:
connect(timer,&QTimer::timeout,widget,&QMwidget::animate);
第三種:
connect(timer,QTimer::timeout,widget,QMwidget::animate);
我覺得第一種和第三種比較好理解。connect的原型是
connect(QObject* sender,const char* signal,QObject* receiver,const char* method);
我的理解是因為物件并不保存類函式的代碼,因此呼叫timer->timeout和Mwidget->animate都是呼叫的Qtimer類和QMwidget類的方法,也就是QTimer::timeout和QMwidget::animate。
但是第二種和第三種就有點不懂了,在類方法的前面加了&,因為QMwidget::animate本身表示函式名,也就是函式的指標,和形參型別相符。但是加&應該是函式指標的地址,但是也能使用,這是為什么呢?
uj5u.com熱心網友回復:
函式指標有兩種表示,加不加&符號看編譯器。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/19093.html
標籤:基礎類
上一篇:索引超出矩陣維度
下一篇:程式作業求幫忙。
