以下代码编译并运行,但我不确定在较低级别到底发生了什么。引用不只是存储被引用对象的地址吗?如果是这样,两个测试函数都接收一个地址作为参数?或者 C++ 实现是否能够以其他方式区分这些类型?
int main() {
int i = 1;
cout << test(i) << endl;
}
char test(int &i) {
return 'a';
}
char test(int *i) {
return 'b';
}
最佳答案
由于 int&
和 int*
是不同的类型,i
可以被视为 int&
而不是a int*
,重载决议在这里绝对不含糊。
在这一点上,引用只是一种有点隐蔽的指针并不重要。从语言的角度来看,它们是不同的类型。
关于c++ - 在以下情况下函数重载如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6180219/