簡體   English   中英

為什么在 c++ 中不考慮函數返回類型的重載?

[英]why funtion return type is not considered for overloading in c++?

我知道我們稱之為重載的 function,編譯器嘗試匹配精確的原型,然后進行類型提升。 但是我們談到返回類型,編譯器不進行精確匹配並拋出錯誤。 我不確定它背后的邏輯。 親愛的朋友,你能幫幫我嗎? 在此先感謝大家

C++ 重載的規則已經很復雜了。 試圖考慮返回值的使用方式會使它們變得更加復雜。 如果您嘗試編寫一些連貫的規則來涵蓋這一點,您會看到它們是如何變得復雜的。

當然, int n = foo(); 很簡單。 但是bar(foo())相當復雜。 或者考慮bar() + foo()其中哪個bar被調用決定了你正在調用的operator+ ,因此可以支持foo的哪些返回類型。

並且標准必須精確地指定編譯器如何以及何時需要判斷適當的返回類型。 否則代碼可能會在一個編譯器上編譯而不是在另一個編譯器上編譯,從而設置痛苦的陷阱。

暫無
暫無

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

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