2

如果我要像这样在堆上声明一个对象:

X* x = new X();
func(?);

void func(X& x);

如何传递xfunc()以便func()可以接收对x(而不是指针)的引用?

4

2 回答 2

4

你必须像这样取消引用它:func(*x)

于 2013-10-04T21:49:31.833 回答
3

取消引用指针并像这样传递它:

func(*x);

您的函数必须传递 X 类型的东西。对象通过引用传递的事实不会改变您调用它的方式。由于 x 具有 X* 类型,因此您需要取消对 x 的引用才能获得 X 类型的东西。

为了说明,假设你有

void func1(X& x);
void func2(const X& x);
void func3(X x);
void func4(const X x);

对于每种情况,您都将以相同的方式调用函数。

于 2013-10-04T21:50:36.220 回答