c++ - 在以下情况下函数重载如何工作?

标签 c++

以下代码编译并运行,但我不确定在较低级别到底发生了什么。引用不只是存储被引用对象的地址吗?如果是这样,两个测试函数都接收一个地址作为参数?或者 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/

相关文章:

c++ - 跨线程调用 a.k.a 从其他线程在主/UI 线程上运行而无需依赖

c++ - 在 C++ 中返回指向 const 数组的指针

c++: 函数 arg char** 与 char*[] 不同

c++ - 错误 : use of deleted function for overloaded template

c++ - 在 C++ 中重载子类中的方法

c++ - 随机填充二维数组

c++ - 我如何在 KDevelop 中设置编译器选项?

c++ - boost::container::string 的内存是否连续?

c++ - 传递的局部变量 (C++)

c++ - MFC CFileDialog 打开只选择文件