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

Declare object on heap and then passing it by reference?

本文关键字:引用 然后 声明 对象      更新时间:2023-10-16

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

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);

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

相关文章: