函式過載(overloaded functions)
// overloaded function
#include int divide (int a, int b)
float divide (float a, float b)
int main ()
在這個例子裡,我們用同乙個名字定義了兩個不同函式,當它們其中乙個接受兩個整型(int)引數,另乙個則接受兩個浮點型(float)引數。編譯器 (compiler)通過檢查傳入的引數的型別來確定是哪乙個函式被呼叫。如果呼叫傳入的是兩個整數引數,那麼是原型定義中有兩個整型(int)參量的函式被呼叫,如果傳入的是兩個浮點數,那麼是原型定義中有兩個浮點型(float)參量的函式被呼叫。
為了簡單起見,這裡我們用的兩個函式的**相同,但這並不是必須的。你可以讓兩個函式用同乙個名字同時完成完全不同的操作。
(inline 函式(inline functions)
inline 指令可以被放在函式宣告之前,要求該函式必須在被呼叫的地方以**形式被編譯。這相當於乙個巨集定義(macro)。它的好處只對短小的函式有效,這種情況下因為避免了呼叫函式的一些常規操作的時間(overhead),如引數堆疊操作的時間,所以編譯結果的執行**會更快一些。
它的宣告形式是:
inline type name ( arguments ... )
它的呼叫和其他的函式呼叫一樣。呼叫函式的時候並不需要寫關鍵字inline ,只有在函式宣告前需要寫。
inline關鍵字用來定義乙個類的內聯函式,引入它的主要原因是用它替代c中表示式形式的巨集定義。
表示式形式的巨集定義一例:
#define expressionname(var1,var2) ((var1)+(var2))*((var1)-(var2))
另外要注意,內聯函式一般只會用在函式內容非常簡單的時候,這是因為,內聯函式的**會在任何呼叫它的地方展開,如果函式太複雜,**膨脹帶來的惡果很可能會大於效率的提高帶來的益處。內聯函式最重要的使用地方是用於類的訪問函式。
函式的宣告(declaring functions)
很多程式設計師建議給所有的函式定義原型。這也是我的建議,特別是在有很多函式或函式很長的情況下。把所有函式的原型定義放在乙個地方,可以使我們在決定怎樣呼叫這些函式的時候輕鬆一些,同時也有助於生成標頭檔案。
執行緒初步了解2
1.執行緒的監聽模式.由於每個執行緒都是由乙個物件去實現的,所以當我們想要監聽這些執行緒的時候,只需要將每個物件裡的重要資料拿出來處理.所以,通常可以將這些物件放入乙個佇列中去,然後再將這個佇列直接傳給監聽執行緒,而在監聽執行緒中,我們又可以再將其有用的資料取出,完成某些特定的功能.當然,首先要保證...
訊號槽初步2
上一節我們詳細分析了connect 函式。使用connect 可以讓我們連線系統提供的訊號和槽。但是,qt 的訊號槽機制並不僅僅是使用系統提供的那部分,還會允許我們自己設計自己的訊號和槽。這也是 qt 框架的設計思路之一,用於我們設計解耦的程式。本節將講解如何在自己的程式中自定義訊號槽。訊號槽不是 ...
從零開始學YC Framework之初步
本文主要內容為如下幾個方面?一 yc framework的取名出於什麼考慮?二 yc framework的特點有哪些?三 yc framework的由哪些模組組成?一共由五大模組組成,分別為如下 四 為什麼要開發yc framework?五 yc framework致力於解決哪些問題?六 yc fr...