您好,登錄后才能下訂單哦!
小編給大家分享一下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,僅在標識符加上前綴‘``_`’即swap()》》_swap()
如果從唯一識別函數作用來看,這種規則沒有任何用:畢竟除了static和命名空間域里面的函數,函數都具有外聯性,一但在不同文件出現同名函數,程序就CREASH。
對于C++,不同編譯器下是不同的:
LINUX:
window:
正是通過這種內部命名規則,函數重載成為可能。
看完了這篇文章,相信你對“C++中函數重載定義與原因是什么”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。