函数传递引用的含义是什么?

5

最近一位C++专家告诉我:

void f(int &*r);

这是一个有效的按引用传递的示例,尽管我认为这是一种指向引用的指针,这是非法的。根据我的知识,按引用传递的正确形式应该是以下两种形式之一:

void f1(int *&r);
void f2(int &r);

你能解释一下第一个示例(函数f)的情况吗?

2
你的“专家”很困惑。 - juanchopanza
我不确定,但是 int* &r 是指针的引用,int &r 是整数的引用,从未见过 int &*r... - Netwave
5
那个人告诉你他是专家,还是你自己指定了他的角色? - Lightness Races in Orbit
他被他所在公司认为是专家。 - dragosb
2个回答

8

第一个(指向引用的指针)在所有版本的C++中都是非法的。另外两个是合法的

底线:忽略你的教练 - 至少在这种情况下,他/她不了解C++。


3

根据C++标准8.3.2/5:

不允许有对引用的引用,没有引用的数组和没有指向引用的指针

因此,在代码中写int&是不被允许的,编译会报错,g++会输出以下错误信息:

error: cannot declare pointer to 'int&'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接