欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++函數(shù)參數(shù)匹配規(guī)則示例小結(jié)

 更新時(shí)間:2023年08月18日 08:40:29   作者:yucongxing  
這篇文章主要介紹了C++函數(shù)參數(shù)匹配規(guī)則,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

C++ 函數(shù)參數(shù)匹配

1 單個(gè)參數(shù)匹配

void f(); //f1
void f(int); //f2
void f(int, int); //f3
void f(double, double=3.14);//f4
int main() {
    f(5.6); //調(diào)用f4
    return 0;
}

candidate functions:函數(shù)名稱相同(f1, f2, f3, f4 都是)。
viable functions:參數(shù)個(gè)數(shù)相同(排除f1, f3),且參數(shù)可以轉(zhuǎn)換成相同類型(f2, f4都是viable function)。如果不存在viable functions,則編譯器報(bào)參數(shù)不匹配錯(cuò)誤(可以通過linting檢查)。 最后決定參數(shù)類型是否匹配,如果匹配優(yōu)先調(diào)用,不能則選擇可以隱式轉(zhuǎn)換成類型相同的函數(shù)。

2 多個(gè)參數(shù)匹配

void f(); //f1
void f(int); //f2
void f(int, int); //f3
void f(double, double=3.14);//f4
int main() {
    f(42, 5.6); //報(bào)錯(cuò),參數(shù)模糊 
    return 0;
}

condidate functions: f1, f2, f3, f4
viable functions: f3, f4
優(yōu)先級(jí): 精確匹配的參數(shù)個(gè)數(shù)越多優(yōu)先級(jí)越高,參數(shù)個(gè)數(shù)相同優(yōu)先級(jí)相同,如果存在多個(gè)最高優(yōu)先級(jí)的函數(shù),則報(bào)參數(shù)模糊錯(cuò)誤。

參數(shù)類型轉(zhuǎn)換

優(yōu)先級(jí):

  • 精確匹配:包括類型相同, 數(shù)組和參數(shù)名轉(zhuǎn)換為指針,忽略頂層const
  • const 轉(zhuǎn)換 (把非const實(shí)參傳給const形參)
  • promotion數(shù)據(jù)提升,如int->long, char->unsigned等
  • 算術(shù)轉(zhuǎn)換或者指針類型轉(zhuǎn)換
  • 類類型(class-type)轉(zhuǎn)換,如string->bool

Promotion and Arithmetic Conversion

void ff(int); //f1
void ff(short); //f2
void manip(long); //f3
void manip(float); //f4
int main() {
    ff('a'); //調(diào)用f1,char -> int是promotionO(比int短的數(shù)據(jù)類型統(tǒng)一promotion為int, 
             // char->short 是算術(shù)轉(zhuǎn)換
    manip(3.14); //error: ambiguous call,3.14視為double,double->float和doule->long在優(yōu)先級(jí)上是等價(jià)的 
    return 0;
}

const Arguments

忽略頂層const, 原因是傳參的時(shí)候?qū)嶋H上進(jìn)行的是copy過程,即copy一份實(shí)參給形參,copy會(huì)忽略頂層const

void f(int a);
void f(const int a);//報(bào)錯(cuò),重復(fù)定義,兩者只能定義一種
void f(int *a);
void f(int* const a);//報(bào)錯(cuò),重復(fù)定義,兩者只能定義一種

const 轉(zhuǎn)換

void f(int &); //f1
void f(const int &);//f2
int main() {
    const int a{0};
    int b{0}; 
    f(a); //調(diào)用f2(精確匹配) 
    f(b); //調(diào)用f1(沒有定義f1時(shí),調(diào)用f2)
    return 0;
}

另外,

void f(int);
void f(int &);
int main() {
    int i = 0;
    f(i); //報(bào)錯(cuò),ambiguous call
    return 0;
}

到此這篇關(guān)于C++函數(shù)參數(shù)匹配規(guī)則的文章就介紹到這了,更多相關(guān)C++函數(shù)參數(shù)匹配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實(shí)現(xiàn)火車票管理系統(tǒng)

    C語言實(shí)現(xiàn)火車票管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)火車票管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++實(shí)現(xiàn)字符格式相互轉(zhuǎn)換的示例代碼

    C++實(shí)現(xiàn)字符格式相互轉(zhuǎn)換的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C++中實(shí)現(xiàn)字符格式相互轉(zhuǎn)換的方法,主要有UTF8與string互轉(zhuǎn)、wstring與string互轉(zhuǎn),感興趣的小伙伴可以了解一下
    2022-11-11
  • C++實(shí)現(xiàn)LeetCode(12.整數(shù)轉(zhuǎn)化成羅馬數(shù)字)

    C++實(shí)現(xiàn)LeetCode(12.整數(shù)轉(zhuǎn)化成羅馬數(shù)字)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(12.整數(shù)轉(zhuǎn)化成羅馬數(shù)字),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 詳解C語言#define預(yù)處理宏定義

    詳解C語言#define預(yù)處理宏定義

    本文主要介紹了C語言#define預(yù)處理宏定義,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解C/C++如何獲取路徑下所有文件及其子目錄的文件名

    詳解C/C++如何獲取路徑下所有文件及其子目錄的文件名

    這篇文章主要為大家詳細(xì)介紹了在C/C++中如何獲取路徑下所有文件及其子目錄的文件名,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • C語言實(shí)現(xiàn)學(xué)生考勤系統(tǒng)

    C語言實(shí)現(xiàn)學(xué)生考勤系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生考勤系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++入門之內(nèi)存處理詳解

    C++入門之內(nèi)存處理詳解

    這篇文章主要為大家介紹了C++入門之內(nèi)存處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • c語言++放在前面和后面的區(qū)別分析

    c語言++放在前面和后面的區(qū)別分析

    在C語言中,前綴自增(++i)和后綴自增(i++)操作符并不是同一個(gè)操作符,前綴自增操作符的優(yōu)先級(jí)高于后綴自增,同時(shí)得到的結(jié)果并不完全一致,因此需要區(qū)分
    2015-11-11
  • C語言獲得電腦的IP地址的小例子

    C語言獲得電腦的IP地址的小例子

    C語言獲得電腦的IP地址的小例子,需要的朋友可以參考一下
    2013-05-05
  • C++之const限定符詳解

    C++之const限定符詳解

    這篇文章主要為大家介紹了C++之const限定符,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12

最新評(píng)論