如果我要像这样在堆上声明一个对象:
X* x = new X();
func(?);
void func(X& x);
如何传递x
给func()
以便func()
可以接收对x
(而不是指针)的引用?
如果我要像这样在堆上声明一个对象:
X* x = new X();
func(?);
void func(X& x);
如何传递x
给func()
以便func()
可以接收对x
(而不是指针)的引用?
你必须像这样取消引用它:func(*x)
取消引用指针并像这样传递它:
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);
对于每种情况,您都将以相同的方式调用函数。