【发布时间】:2022-01-06 21:49:56
【问题描述】:
我创建了两个文件,Linkage.cpp 和 External.cpp。
Linkage.cpp:
#include <iostream>
void Log(int x = 5)
{
std::cout << x << "\n";
}
int main()
{
Log();
return 0;
}
External.cpp:
#include <iostream>
void Log(const char* message)
{
std::cout << message << "\n";
}
为什么我没有收到链接器错误?这两个函数都是在全局命名空间中定义的,所以应该和变量一样存在命名冲突。
【问题讨论】:
-
为什么会有冲突?它们没有相同的签名。
-
您能解释一下吗?什么是函数签名?
-
为了让两个函数被认为是相同的,它们需要具有相同的名称和参数。你知道什么是函数重载吗? In C++ how is function overloading typically implemented?
-
它们甚至可以在同一个文件中。没问题。 Example
-
请注意,函数的 返回类型 通常并不重要。例如,您不能同时拥有
int foo();和double foo();。那会引起歧义。更多信息在这里:Is the return type part of the function signature?
标签: c++ function namespaces global