實參類型轉換

在實現函數重載時,一般會遇到如何選擇函數的問題ios

爲了肯定最佳匹配,編譯器將實參類型到相應形參類型的轉換劃分等級,轉換等級降序以下:函數

1)精確匹配,實參與形參類型相同;spa

2)經過類型提高實現的匹配;指針

#include <iostream>
using namespace std;
void display(int num)
{
    cout<<"recall function display(int num): "<<num<<endl;
}
void display(short num)
{
     cout<<"recall function display(short num): "<<num<<endl;
}
void display(double num)
{
     cout<<"recall function display(double num): "<<num<<endl;
}
int main()
{
    char cDisplayNum = 'a';
    display(cDisplayNum);
    return 0;
}
 

上述例子展現了類型提高。C++語言爲內置類型提供了一組轉換規則,其中最經常使用的是算術轉換,算術轉換規則定義了一個類型轉換層次,改層次規定了操做數應該按什麼次序轉換爲表達式中最寬的類型。如對於小於int的整型,包括char、signed char、unsigned char、short和unsigned short都會提高爲int類型。code

3)經過標準轉換實現的匹配;對象

    1.指針轉換;2.轉換爲bool類型;3.算術類型與bool類型的轉換; 4.轉換與枚舉類型;5.轉換爲const對象; 6.有標準庫類型定義的轉換。blog

4)經過類類型轉換實現的匹配。編譯器

相關文章
相關標籤/搜索