我已经声明geta()函数返回对a的引用,我必须在int指针中收集它.代码工作正常,但为什么我不能使用注释行.是不是在做同样的事情?代码如下:
#include<iostream>
using namespace std;
class Foo
{
int a=6;
public:
int& geta()
{
return a;
}
};
int main()
{
Foo f;
int &z = f.geta(); //int *p = f.geta(); Why this doesn't work?
int *p = &z;
cout << *p;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
不要与&和*符号混淆.符号的含义在表达式和声明中是不同的.
当它在表达式中使用时,&表示address-of运算符,它返回变量的地址.
但是,当&在声明中使用(包括函数形式参数)时,它是类型标识符的一部分,用于声明引用变量(别名/备用名称).
参考和指针不是一回事. 你可以在这里查看... C++中指针变量和引用变量之间有什么区别?