1.什麼是託管函數
託管函數是一個對類裏面的某個函數的一個引用。它自己並沒有具體的函數定義,只是指向某個函數實現。
2.與C++,Delphi的橫向比較
在C++和Delphi中與託管函數對應的類型是函數指針,形式如下:
C++
typedef (int GetNum)(real rNum); |
Delphi
function GetNum(rNum:real): integer; external; |
這裏定義函數指針,他們所能指向的函數定義的傳入參數必須是實型,傳出爲整型。
3.託管函數有什麼用
由於託管函數是對類裏面某個函數的一個引用。所以我們不必知道這個函數的具體名字是什麼,而只需要調用託管函數,讓託管函數去調用相應的函數就可以了。一個例子:一個公司,一個領導,一個領導祕書,三個員工分別管理市場,策劃和生產。這裏祕書就相當與一個託管函數,領導要下達什麼命令(獲得市場信息,生產什麼產品),只需要對祕書說給我一份市場報告或者我們不生產原子彈轉向生產氫彈。然後再由祕書根據領導的命令選擇的去找哪個員工,再把員工獲得的信息返回給領導。這裏面三個員工對於領導是透明的,領導並不知道自己下達的命令具體是由誰執行的。
4.如何定義和使用
接着上面的例子,我們聲明一個祕書託管函數原型。
class Secretory case 調研市場的人: Doit=new Do(new MarketMan().GetMarketInfo);
Case 生長產品的人: |
5.其他
正如你們所見的,上面的兩個類中的方法,一個是靜態,一個不是靜態的。託管函數所指的函數可以是靜態的也可以不是靜態的。