gpt4 book ai didi

c++ - 保留的函数名可以重载吗?

转载 作者:可可西里 更新时间:2023-11-01 17:59:05 25 4
gpt4 key购买 nike

这个问题是this one的后续问题.

考虑以下程序:

#include <cmath>

// meaningless, only for language-lawyer purpose
void abs(void*) {}

int main(){
abs(nullptr);
}

这个程序会导致未定义的行为吗?


标准中相关部分为[extern.names]/4 :

Each function signature from the C standard library declared with external linkage is reserved to the implementation for use as a function signature with both extern "C" and extern "C++" linkage, or as a name of namespace scope in the global namespace.

我不确定是否允许重载。

最佳答案

这个声明有两个部分,因为它讨论了保留的名称(来自 C 标准)(用于 C++ 实现)。特别是,

Part 1: Each function signature from the C standard library declared with external linkage

这包括 C 库函数 abs

Part 2: is reserved to the implementation for use as a function signature with both extern "C" and extern "C++" linkage, or as a name of namespace scope in the global namespace.

因此名称::abs 是为C++ 实现保留的。你不能使用它。重载是无关紧要的。

关于c++ - 保留的函数名可以重载吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50925440/

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