suAlwaysRoot

博客园 首页 新随笔 联系 订阅 管理

C++ 重载决议

flowchart TD AA(["开始"]) A["在相同作用域内寻找同名函数"] P["排除不可访问的函数"] B["存在完全相同的函数签名?"] L["存在多个匹配的函数?"] D["找不到匹配函数"] E["二义性错误"] F["存在数组/函数指针转换?"] G["存在可以进行提升或隐式转换的函数?"] H["选择匹配的唯一函数"] I["存在非 explicit 的转换构造函数?"] J["存在类型转换运算符?"] C["是否有const/volatile 修饰符?"] M["选择最接近的函数"] N["同时存在有可变参数与不可变参数的函数?"] O["选择非可变参数的版本"] Q["存在候选函数?"] R["排除参数数量不匹配的函数(考虑默认参数)"] AA-->A-->P-->R-->Q Q --是--> B --是 --> C Q--否-->D B--否-->F C--否-->L F--是-->C F--否-->G G--是-->C G--否-->I I--是-->C I--否-->J J--是-->C J--否-->D C--是-->M L--是-->N L--否-->H N--否-->E N--是-->O M-->L click G "#custom-footnote"

flowchart TD subgraph Promotion [提升,优先级高] direction TB char --> int short-->int bool-->int float-->double enum-->int ll["long long"] int-->ll end
flowchart TD subgraph Conversion [隐式转换 Conversion - 优先级低] direction TB int-->double double-->int ll2["long long"] ll2-->int ui["unsigned int"] int-->ui Base*-->Derived* end
posted on 2026-04-11 22:52  suAlwaysRoot  阅读(2)  评论(0)    收藏  举报