2019.3.5 學習總結 C++重學

聲明類時系統並不分配內存單元,而定義對象時系統會給每個對象分配內存單元

1.Slots也是普通的c++方法,它們可以是virtual;可以被重載;
可以使private、protected、public,可以像其它c++方法一樣有各種類型的參數。
它們唯一的區別就是signal與slot是相互鏈接起來的,slot函數在每次signal函數被emit時會被調用。
2.聲明一個信號要使用signals關鍵字,signals前面不可加public、private和protected進行修飾,因爲只有定義該信號的類及其子類
纔可以發射該信號;聲明一個槽需要使用slots關鍵字,一個槽可以是private、public或者protected類型的,槽也可以被聲明爲虛函數,
這與普通的成員函數是一樣的,也可以像調用一個普通函數一樣來調用槽。槽的最大特點就是可以和信號關聯。
3.信號的聲明是在頭文件中進行的,QT的signals關鍵字指出進入了信號聲明區,隨後即可聲明自己的信號。例如,下面定義了三個信號: 
signals: 
void mySignal(); 
void mySignal(int x); 
void mySignalParam(int x,int y); 
4.從形式上講信號的聲明和普通的C++函數是相同的,不過信號卻沒有函數體定義,另外,信號的返回類型都是void,不要指望能從信號返回什麼有用信息。
 信號由moc自動產生,他們不應該在.cpp文件中實現。 
5.
需要繼承自QObject或其子類;
在類聲明的最開始處添加Q_OBJECT宏;
槽中的參數的類型要和信號的參數的類型相對應,且不能比信號的參數多;
信號只用聲明,沒有定義,且返回值爲void類型。
在Qt實際編程時,最好確保工程中每個信號都至少有一個槽函數與之相連接,即不存在無用信號;並且確保工程中每個槽函數都在cpp中實現。

6.成員函數可以訪問本類的任何成員,而普通函數只能訪問對象的公用成員

7.同一個類的不同對象的數據是不一樣的,因此要爲每個對象的數據成員分配內存單元

同一個類的不同對象的函數是一樣的,因此將同類的所有對象的函數放在一個公共的區域


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章