簡體   English   中英

重載功能

[英]Overloading Function

如果在具有不同簽名的多個文件中定義了具有相同名稱的功能,這些功能是否會重載?

File1.cpp

int foo(){//do something}

File2.cpp

int foo(int a){//do something}

如果我在同一個項目中編譯這兩個文件,這些函數將被視為重載函數。

是的,它們是兩個不同的功能。

函數簽名主要基於參數:參數的數量,它們的類型和順序。 類成員函數還具有修飾符,例如是否為const 返回類型不是區分重載函數的簽名的一部分。

如果兩個相同名稱的功能具有唯一的簽名,則它們是不同的。

是的,他們會appropiately 名稱錯位成兩個單獨的功能,其范圍是全球性的,在全局命名空間(又名:該::命名空間)。

對於要重載且不違反ODR的兩個函數,它們的參數類型和“屬性”(例如,參數列表之后的constvolatilenoexcept )應不同。 具有相同參數類型和“屬性”集但具有不同返回類型的兩個函數違反了ODR。

只是不必為此擔心,而讓鏈接器成為其天生就是的編譯器的從屬。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM