最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

1 單個參數(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); //調用f4
    return 0;
}

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

2 多個參數(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); //報錯,參數(shù)模糊 
    return 0;
}

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

參數(shù)類型轉換

優(yōu)先級:

  • 精確匹配:包括類型相同, 數(shù)組和參數(shù)名轉換為指針,忽略頂層const
  • const 轉換 (把非const實參傳給const形參)
  • promotion數(shù)據(jù)提升,如int->long, char->unsigned等
  • 算術轉換或者指針類型轉換
  • 類類型(class-type)轉換,如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'); //調用f1,char -> int是promotionO(比int短的數(shù)據(jù)類型統(tǒng)一promotion為int, 
             // char->short 是算術轉換
    manip(3.14); //error: ambiguous call,3.14視為double,double->float和doule->long在優(yōu)先級上是等價的 
    return 0;
}

const Arguments

忽略頂層const, 原因是傳參的時候實際上進行的是copy過程,即copy一份實參給形參,copy會忽略頂層const

void f(int a);
void f(const int a);//報錯,重復定義,兩者只能定義一種
void f(int *a);
void f(int* const a);//報錯,重復定義,兩者只能定義一種

const 轉換

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

另外,

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

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

相關文章

  • C++深入講解new與deleted關鍵字的使用

    C++深入講解new與deleted關鍵字的使用

    這篇文章主要介紹了C++中new與deleted關鍵字的使用,new在動態(tài)內存中為對象分配空間并返回一個指向該對象的指針;delete接受一個動態(tài)對象的指針, 銷毀該對象, 并釋放與之關聯(lián)的內存
    2022-05-05
  • 計時器的time_t和clock_t 的兩種實現(xiàn)方法(推薦)

    計時器的time_t和clock_t 的兩種實現(xiàn)方法(推薦)

    下面小編就為大家?guī)硪黄嫊r器的time_t和clock_t 的兩種實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • C++如何計算結構體與對象的大小

    C++如何計算結構體與對象的大小

    這篇文章主要給大家介紹了關于C++如何計算結構體與對象大小的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • C語言中順序棧和鏈棧的定義和使用詳解

    C語言中順序棧和鏈棧的定義和使用詳解

    這篇文章主要為大家詳細介紹了C語言中順序棧和鏈棧的定義和使用,文中的示例代碼講解詳細,對我們學習C語言有一定的幫助,感興趣的小伙伴可以了解一下
    2022-10-10
  • 使用emacs編寫C語言教程

    使用emacs編寫C語言教程

    這篇文章主要介紹了使用emacs編寫C語言教程,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • OJ中G++和C++的區(qū)別

    OJ中G++和C++的區(qū)別

    今天小編就為大家分享一篇關于OJ中G++和C++的區(qū)別,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • C++超詳細講解隱藏私有屬性和方法的兩種實現(xiàn)方式

    C++超詳細講解隱藏私有屬性和方法的兩種實現(xiàn)方式

    為了避免因為將類庫中的私有成員開放給類的使用方而導致的軟件邏輯外泄,因此需要將對外代碼中的私有成員隱藏起來,下面我們來了解一下隱藏私有屬性和方法的兩種實現(xiàn)方式
    2022-05-05
  • C++實現(xiàn)CreatThread函數(shù)主線程與工作線程交互的方法

    C++實現(xiàn)CreatThread函數(shù)主線程與工作線程交互的方法

    這篇文章主要介紹了C++實現(xiàn)CreatThread函數(shù)主線程與工作線程交互的方法,是Windows應用程序設計中非常實用的方法,需要的朋友可以參考下
    2014-10-10
  • OpenCV實現(xiàn)高斯噪聲

    OpenCV實現(xiàn)高斯噪聲

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)高斯噪聲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語言if選擇結構語句詳解

    C語言if選擇結構語句詳解

    大家好,本篇文章主要講的是C語言if選擇結構語句詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論

商洛市| 保德县| 郑州市| 宁都县| 白水县| 安徽省| 姜堰市| 敦煌市| 华坪县| 乐至县| 汝城县| 阳原县| 锦州市| 台南县| 醴陵市| 同江市| 竹溪县| 江达县| 丰原市| 会同县| 临江市| 无棣县| 会泽县| 娄底市| 广汉市| 北辰区| 建始县| 徐水县| 修水县| 虞城县| 毕节市| 佛教| 孟津县| 塔城市| 深水埗区| 东乌| 长宁县| 永宁县| 和田县| 西昌市| 盱眙县|