C++中的函式簽名

fengbingchun發表於2018-01-22

C++中的函式簽名(function signature):包含了一個函式的資訊,包括函式名、引數型別、引數個數、順序以及它所在的類和名稱空間。普通函式簽名並不包含函式返回值部分,如果兩個函式僅僅只有函式返回值不同,那麼系統是無法區分這兩個函式的,此時編譯器會提示語法錯誤。函式簽名用於識別不同的函式,函式的名字只是函式簽名的一部分。在編譯器及連結器處理符號時,使用某種名稱修飾的方法,使得每個函式簽名對應一個修飾後名稱(decorated name)。編譯器在將C++原始碼編譯成目標檔案時,會將函式和變數的名字進行修飾,形成符號名,也就是說,C++的原始碼編譯後的目標檔案中所使用的符號名是相應的函式和變數的修飾後名稱。C++編譯器和連結器都使用符號來識別和處理函式和變數,所以對於不同函式簽名的函式,即使函式名相同,編譯器和連結器都認為它們是不同的函式

不同的編譯器廠商的名稱修飾方法可能不同,所以不同的編譯器對於同一個函式簽名可能對應不同的修飾後名稱。

For functions that are specializations of function templates, the signature includes the return type. For functions that are not specializations, the return type is not part of the signature.

A function signature consists of the function prototype. What it tells you is the general information about a function, its name, parameters, what scope it is in, and other miscellaneous information.

Two overloaded functions must not have the same signature.

Default Arguments: The last parameter or parameters in a function signature may be assigned a default argument, which means that the caller may leave out the argument when calling the function unless they want to specify some other value.

注:以上內容來自於網路整理。

相關文章