中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++缺省參數與函數重載怎么調用

發布時間:2023-04-24 16:57:40 來源:億速云 閱讀:86 作者:iii 欄目:開發技術

這篇文章主要講解了“C++缺省參數與函數重載怎么調用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++缺省參數與函數重載怎么調用”吧!

    一.缺省參數


    1.概念

    缺省參數是聲明或定義函數時為函數的參數指定一個缺省值。在調用該函數時:

          a.如果沒有指定實參則采用該形參的缺省值;

          b.否則使用指定的實參。

    例:

    C++缺省參數與函數重載怎么調用

    2.分類

    a.全缺省參數:函數的所有參數都是缺省參數。

    //全缺省參數
    void func(int a=10,int b=20)
    {
        return a+b;
    }

    b.半缺省參數:函數的部分參數是缺省參數,并不是非得有一半是缺省參數。

    //半缺省參數
    void func(int a,int b=20,int c=10)
    {
        return a+b+c;
    }

    3.注意

    a.缺省參數是從右往左,所以不能隔著給;

    b.函數傳參是從左往右,所以不能跳著傳參;

    c.函數的聲明和定義不能同時出現缺省參數,只能在聲明出現,定義不能出現;

    d.缺省值必須是常量或是全局變量。

    二.函數重載

    先來講講重載在生活中的例子。

    簡單來說就是一個詞的不同意思,我們來看一個笑話吧:

                國有兩個體育項目大家根本不用看,也不用擔心。一個是乒乓球,一個是男足。前者是“誰也贏不了!”,后者是“誰也贏不了!

    同一詞”誰也贏不了“,表達的卻是不同的意思,這就是重載。

    1.概念

    函數重載:是函數的一種特殊情況,C++允許在同一作用域中聲明幾個功能類似的同名數;

    特點:

              a.同名

              b.參數的類型,個數,類型順序不同

              c.與返回值是否相同無關

    注意:函數中有缺省參數也可以認為是函數重載;

    例:

    void func()
    {
        cout << 1 << endl;
    }
     
    void func(int a = 10)
    {
        cout << 10 << endl;
    }
     
    //但這種情況要注意,如果這樣調用函數:func(),就會報錯

    如果使用不當,會造成這個錯誤:

    C++缺省參數與函數重載怎么調用

    注意以下情形并不構成函數重載:

    int add(int a, int b)
    {
        return a + b;
    }
     
    int add(int b, int a)
    {
        return a + b;
    }

    至于為什么不構成,這就涉及到函數重載的原理了,下面讓我們一起來看看函數重載的原理吧。

    2.C++支持函數重載的原理

    C++編譯器中,調用函數時,不是直接用函數名,而是會對函數名進行修飾,根據修飾后的調用函數。而C編譯器并不會對函數進行修飾,它是直接用函數名來調用函數的,所以C不支持函數重載。

    所以上述不構成函數重載的情形就得到了解釋。

    不同環境下的修飾規則不同,vs的較為復雜,這里以Linux的修飾規則為例

    Linux的修飾規則

    _Z+函數名的長度+函數名+參數類型的第一個字母

    void  func(int a,double b);
    //Linux環境下修飾后的:_Z4funcid

    感謝各位的閱讀,以上就是“C++缺省參數與函數重載怎么調用”的內容了,經過本文的學習后,相信大家對C++缺省參數與函數重載怎么調用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    c++
    AI

    沂源县| 长泰县| 乌兰察布市| 龙江县| 安塞县| 麟游县| 塘沽区| 乐陵市| 蒙山县| 穆棱市| 阿克| 南昌市| 南和县| 泸水县| 连南| 石城县| 阳春市| 桂东县| 巢湖市| 梅州市| 宜都市| 安塞县| 印江| 河间市| 南开区| 綦江县| 南宁市| 济南市| 清水河县| 敦煌市| 辽源市| 鸡西市| 沐川县| 香河县| 隆昌县| 武清区| 横峰县| 江孜县| 河北区| 岳西县| 乐山市|