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

溫馨提示×

溫馨提示×

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

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

C++中函數重載定義與原因是什么

發布時間:2022-03-07 11:53:16 來源:億速云 閱讀:148 作者:小新 欄目:開發技術

小編給大家分享一下C++中函數重載定義與原因是什么,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

    引例

    如果要求你只能通過print函數,即能打印字符串,又能打印一個整型。

    雖然在C語言中我們可以通過 print_i 和print_s來實現功能。

    但是C++更方便。C++支持同一函數名,完成類似的功能的語法。

    void print(int i)
    {
        cout << "print a integer :" << i << endl;
    }
    
    void print(string str)
    {
        cout << "print a string :" << str << endl;
    }
    
    int main()
    {
        print(12);
        print("hello world!");
        return 0;
    }

    函數重載的定義

    函數重載是指在同一作用域內(可以淺顯理解為同一文件內,畢竟函數具有外聯系),可以有一組具有相同函數名,不同參數列表的函數,這組函數被稱為重載函數。重載函數通常用來命名一組功能相似的函數,這樣做減少了函數名的數量,避免了名字空間的污染,對于程序的可讀性有很大的好處.

    函數重載規則

    函數重載的條件:參數個數 或 類型 或 順序必須不同,函數名不看

    C++中函數重載定義與原因是什么

    為什么C不支持函數重載而C++可以

    要想達到函數重載必然解決:函數命名問題 &mdash;編譯器只需要將用戶定義的各種標識符,再加載內存中,對其進行修飾即----內部名稱

    因為如果不解決函數命名問題,在編譯時,就無法形成符號表,同時在鏈接階段時,匯總符號表也成問題,畢竟符號表決定了,程序到達調用哪個函數。

    C++中函數重載定義與原因是什么

    內部名稱

    • 內部名稱:C和C++的語言實現都會按照特定規則,將定義的標識符(各種變量名,函數名,類型,命名空間等)轉換為對應的內部名稱.通過內部名稱編譯器就可以識別各種標識符.

    • 對于C,僅在標識符加上前綴&lsquo;``_`&rsquo;即swap()》》_swap()

    • 如果從唯一識別函數作用來看,這種規則沒有任何用:畢竟除了static和命名空間域里面的函數,函數都具有外聯性,一但在不同文件出現同名函數,程序就CREASH。

    • 對于C++,不同編譯器下是不同的:

    LINUX:

    C++中函數重載定義與原因是什么

    window:

    C++中函數重載定義與原因是什么

    正是通過這種內部命名規則,函數重載成為可能。

    看完了這篇文章,相信你對“C++中函數重載定義與原因是什么”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

    向AI問一下細節

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

    c++
    AI

    绥棱县| 囊谦县| 库尔勒市| 和平区| 荥阳市| 文化| 鸡泽县| 吉木乃县| 邻水| 双鸭山市| 开化县| 新巴尔虎右旗| 神池县| 刚察县| 钟山县| 霍林郭勒市| 淳化县| 乌拉特前旗| 桐柏县| 叙永县| 中卫市| 任丘市| 南平市| 赫章县| 图木舒克市| 额尔古纳市| 大竹县| 潮安县| 宾阳县| 许昌市| 沅江市| 资溪县| 政和县| 苗栗县| 峨眉山市| 娄底市| 宁化县| 同江市| 阿拉善盟| 察雅县| 荆门市|