#include <iostream>
using namespace std;
int main() {
int x = 5;
int* y = &x;
int& z = y;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对于此代码,编译器给出以下错误int& z = y;:
./example.cpp: In function 'int main()':
./example.cpp:7:11: error: invalid conversion from 'int*' to 'int' [-fpermissive]
7 | int& z = y;
| ^
| |
| int*
./example.cpp:7:11: error: cannot bind rvalue '(int)y' to 'int&'
Run Code Online (Sandbox Code Playgroud)
为什么?我知道为什么会出错,而且我知道如何解决它,我很好奇为什么编译器无法隐式执行转换,对我而言,我的意图似乎微不足道,是使指针和引用引用相同的内存位置。我想念什么极端情况吗?