重載函數的調用匹配,依次按照下列規則來判斷:
精確匹配:參數匹配而不做轉換,或者只是做微不足道的轉換,如數組名到指針、函數名到指向函數的指針、T到const T;
提升匹配:即整數提升(如bool到int、char到int、short到int),float到double;
使用標准轉換匹配:如int到double、double到int、double到long double、Derived*到Base*、T*到void*、int到unsigned int;
使用用戶自定義匹配;
使用省略號匹配:類似於printf中省略號參數。
假如運行環境int類型4bytes,short類型2bytes,long類型8bytes,存在代碼: unsigned short x = 65530; int a = myfunc( x, 20.0 ); 會優先匹配以下哪一個重載函數? A. int myfunc( double, double ) B. int myfunc( short, double ) C. double myfunc( int, float ) D. double myfunc( int, double)
答案為D!