假设我f在C++中使用以下3个签名定义了一些函数:
void f(int x) {}
void f(int& x) {}
void f(const int& x) {}
Run Code Online (Sandbox Code Playgroud)
这些函数可以共存,因为它们的参数类型不同.
现在我运行以下代码:
int main {
int i = 3;
const int ci = 4;
f(3);
f(i);
f(ci);
}
Run Code Online (Sandbox Code Playgroud)
在这种特定情况下,C++如何知道要调用哪个重载函数?在C++中编写重载函数的一般规则(最佳实践?)是什么,以避免歧义.当前的C++ 14标准是否指定了任何特定的规则?