設計函數覆載時,若函數引數的資料型態中有參考型態,則必須格外小心
void count ( int x );
void count ( int& x );
則我們以下列敘述呼叫時:
int times = 10;
count( times );
則compiler根本無法辨別應該使用哪一個函數
函數指標
利用一指向函數的指標,可以使的函數的呼叫更加有效率,而且也可以使的一函數作為另一函數的引數
double max ( int a, int b );
則欲宣告一個指向max函數的指標
double (*pf) ( int , int );
簽名和傳回值必須與max函數相同
如此程式中便可以將函數max的位址指定給函數指標變數
pf = max;
或直接在定義函數指標時指定函數位址
double (*pf) ( int , int ) = max;
一般函數名稱可以視為函數的起始位址,當然可以用&
double (*pf) ( int , int ) = &max;
***************************************************
double result = (*pf) (3.14,1.22);
double result = max (3.14,1.22);
函數名稱代表該函數記憶體中的起始位址,也屬於指標型態
也可以寫成這樣 double result = pf (3.14,1.22);
函數指標的好處
可以將簽名和傳回值型態相同的函數以陣列的方式組合在一起,變成指標陣列
如此函數的呼叫將變的非常方便而有效率
留言列表