在堆上声明对象然后通过引用传递它?

时间:2013-10-04 21:48:25

标签: c++ pointers reference pass-by-reference

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

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

void func(X& x);

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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);

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