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

C++ 函數(shù)重載詳情介紹

 更新時間:2021年11月19日 09:10:23   作者:梁唐  
這篇文章主要介紹了C++ 函數(shù)重載詳情,函數(shù)重載還有一個別名叫函數(shù)多態(tài),函數(shù)多態(tài)是C++在C語言基礎(chǔ)上的新特性,它可以讓我們使用多個同名函數(shù),下面來看看文章具體內(nèi)容的介紹

文章轉(zhuǎn)自微信公眾號:Coder梁(ID:Coder_LT)

函數(shù)重載

函數(shù)重載還有一個別名叫函數(shù)多態(tài),其實我個人感覺函數(shù)多態(tài)這個名字更好理解更恰當一些。

函數(shù)多態(tài)是C++在C語言基礎(chǔ)上的新特性,它可以讓我們使用多個同名函數(shù)。當然這些同名函數(shù)的參數(shù)是要有區(qū)別的,我們在函數(shù)調(diào)用的時候,編譯器會自動根據(jù)我們傳入的參數(shù),從多個同名函數(shù)當中找到我們調(diào)用的那一個。和面向?qū)ο罄锏亩鄳B(tài)的概念很接近。

我們在定義函數(shù)的時候,編譯器只會查看參數(shù)的數(shù)目和類型,而不會理會參數(shù)的名稱。只要參數(shù)的數(shù)量以及類型不完全相同,就會被認為是不同的函數(shù)。

比如:

void print(const char *str, int width);
void print(double d, int width);
void print(long l, int width);
void print(int i, int width);
void print(const char *str);


上面列舉的5個函數(shù)它們彼此之間的函數(shù)參數(shù)的數(shù)量和類型都不完全相同,因此會被視為是不同的函數(shù)。我們在使用的時候編譯器會根據(jù)我們傳入的參數(shù)使用對應的函數(shù)。

print('pancakes', 15); // use 1
print('pancakes');  // use 5
print(1999.0, 10);  // use 2
print(199, 23);   // use 4
print(199L, 15);  // use 3


這當然沒有問題,如果我們這樣使用呢:

unsigned year = 2021;
print(year, 6);


我們可以發(fā)現(xiàn)我們這里傳入的參數(shù)類型是unsigned int,它不和任何函數(shù)的入?yún)㈩愋推ヅ?。這個時候編譯器并不會放棄,而是會嘗試使用標準類型轉(zhuǎn)換強制進行匹配。但問題來了,我們有三個版本的函數(shù)的第一個入?yún)⑹菙?shù)字類型,于是就有了三種變量轉(zhuǎn)換的方式。這個時候C++將拒絕這種函數(shù)調(diào)用,進行報錯。

同樣,一些看起來彼此不同的參數(shù)也是不能共存的,比如:

double cube(double x);
double cube(double &x);


看起來一個是值傳遞一個是引用傳遞,但是對于編譯器來說,顯然它是無法分辨我們究竟要調(diào)用哪一個的。

還有一點需要注意,就是const修飾符。

void dribble(char *bits);   //1
void dribble(const char *bits); //2


dribble函數(shù)有兩個類型,一個用于const指針,一個用于常規(guī)指針,編譯器將會根據(jù)實參是否為const來決定使用哪個函數(shù)。因為將非const值賦給const變量是合法的,但反之是非法的。

另外,編譯器區(qū)分函數(shù)是根據(jù)函數(shù)的參數(shù)數(shù)量和類型并不是根據(jù)函數(shù)的返回值。所以下面的兩個聲明是有問題的:

long gronk(int n, float m);
double gronk(int n, float m);


因為它們的參數(shù)數(shù)量以及類型都是一樣的,盡管返回類型不同,但編譯器依然無法區(qū)分。

這個問題經(jīng)常在面試當中出現(xiàn),面試官會故意挖坑問你,函數(shù)重載的依據(jù)是什么。如果兩個函數(shù)的返回類型不同,但是參數(shù)一樣,能不能重載。很多同學對重載的概念記憶不是非常深刻,面試的時候腦子一熱就中招了,所以一定要注意。

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

相關(guān)文章

  • Qt實現(xiàn)計算器功能

    Qt實現(xiàn)計算器功能

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • QT已有項目導入工程時注意事項圖文詳解

    QT已有項目導入工程時注意事項圖文詳解

    QT開發(fā)這幾年大大小小項目做了不少,花了點時間對知識點總結(jié)整合了一部分,下面這篇文章主要給大家介紹了關(guān)于QT已有項目導入工程時注意事項的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • C++多重繼承二義性原理實例解析

    C++多重繼承二義性原理實例解析

    這篇文章主要介紹了C++多重繼承二義性原理實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • C/C++ break和continue區(qū)別及使用方法

    C/C++ break和continue區(qū)別及使用方法

    這篇文章主要介紹了C/C++ break和continue區(qū)別及使用方法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Qt結(jié)合libqrencode生成二維碼的實現(xiàn)示例

    Qt結(jié)合libqrencode生成二維碼的實現(xiàn)示例

    本文主要介紹了Qt結(jié)合libqrencode生成二維碼的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 淺談C++中virtual的三種用法

    淺談C++中virtual的三種用法

    這篇文章主要介紹了淺談C++中virtual的三種用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • C語言匯編分析傳遞結(jié)構(gòu)體指針比傳遞結(jié)構(gòu)體變量高效的深層原因

    C語言匯編分析傳遞結(jié)構(gòu)體指針比傳遞結(jié)構(gòu)體變量高效的深層原因

    本文章使用的工具是vs2010,本篇文章主要講解結(jié)構(gòu)體指針作為參數(shù)傳遞與結(jié)構(gòu)體變量作為參數(shù)傳遞的對比,不談值傳遞與址傳遞的概念
    2022-10-10
  • C++11 寫一個只觸發(fā)一次槽函數(shù)的Qt connect函數(shù)

    C++11 寫一個只觸發(fā)一次槽函數(shù)的Qt connect函數(shù)

    這篇文章主要為大家介紹了C++11 寫一個只觸發(fā)一次槽函數(shù)的Qt connect函數(shù)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • C++?STL容器適配器使用指南

    C++?STL容器適配器使用指南

    C++?STL(標準模板庫)是一套功能強大的?C++?模板類,提供了通用的模板類和函數(shù),這些模板類和函數(shù)可以實現(xiàn)多種流行和常用的算法和數(shù)據(jù)結(jié)構(gòu),如向量、鏈表、隊列、棧,今天我們來探究一下stl容器適配器的使用吧
    2021-11-11
  • static關(guān)鍵字的作用詳解

    static關(guān)鍵字的作用詳解

    在C語言中,static的字面意思很容易把我們導入歧途,其實它的作用有三條。
    2013-04-04

最新評論

松江区| 禄丰县| 孟津县| 三都| 平阳县| 施秉县| 曲阳县| 隆回县| 安达市| 长兴县| 西峡县| 策勒县| 洱源县| 青海省| 景洪市| 嵩明县| 岳普湖县| 隆回县| 象州县| 岚皋县| 青冈县| 巴林右旗| 通辽市| 株洲市| 和平区| 西峡县| 临清市| 芦溪县| 兴业县| 都江堰市| 镶黄旗| 岗巴县| 成安县| 卢湾区| 宁阳县| 赫章县| 正安县| 莱阳市| 柳林县| 焉耆| 三门峡市|