gpt4 book ai didi

c++ - C++是否也保留标准库函数名?

转载 作者:行者123 更新时间:2023-11-30 01:42:50 25 4
gpt4 key购买 nike

假设您在翻译单元中定义了一个函数,其函数名称与任何标准库函数完全匹配。由于编译器首先在翻译单元中查找定义,然后在库文件中查找,因此这会导致使用自己版本的函数定义还是会导致诊断?

最佳答案

不,命名空间 std 中的函数名称不是保留的 - 至少,在禁止在命名空间 std 之外使用相同名称的意义上不是。

但是,将名称放在命名空间 std 中(少数情况除外,例如专门化某些模板函数)会产生未定义的行为。

如果编译器在调用您的函数时提示歧义,其中一个函数与您的函数同名但位于命名空间 std 中,则原因可能是 在您的代码中使用命名空间 std。这样做的效果是,当编译器遇到名称时,您的函数和 namespace std 中的函数都是有效匹配项。如果编译器没有理由偏爱其中一个(例如,它们接受相同类型的参数),则代码将无法编译。在这种情况下,解决方案是从您的代码中删除 using namespace std - 除了删除它之外,无法撤消 using namespace std 的影响。

关于c++ - C++是否也保留标准库函数名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745633/

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