gpt4 book ai didi

C++ 重载决议总是求助于别名 arg。超过其他人作为arg。对所有人有效

转载 作者:行者123 更新时间:2023-11-30 04:41:35 25 4
gpt4 key购买 nike

我们如何使(确保)C++ 重载解析始终求助于别名 arg。比正常的 arg.,所以例如必选

int func(string& s) {
// ...
}

结束

int func(string s) { //...
}

什么时候参数对双方都有效?
谢谢

最佳答案

如果参数对两者都有效(例如std::string),那么代码将不会编译(GCC9.2)因为歧义

error: call of overloaded 'func(std::string&)' is ambiguous

https://gcc.godbolt.org/z/qbvrAR

如果您传递 const char* 或其他可默认构造为 std::string 的东西,那么获取字符串拷贝的函数将是叫。 https://gcc.godbolt.org/z/DGSuEz

(我不知道)没有办法告诉编译器他应该更喜欢引用函数而不是复制。您可以在我试图显式调用引用的地方查看此代码段,但由于歧义,编译再次失败: https://gcc.godbolt.org/z/gZSdyj

关于C++ 重载决议总是求助于别名 arg。超过其他人作为arg。对所有人有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59101737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com