为什么我们将传递的参考值视为地址?

Rom*_*man 3 c++ syntax constructor pass-by-reference

我找到了这段代码:

foo::foo(const foo & arg) :
     impl_(new impl(*arg.impl_))
{};
Run Code Online (Sandbox Code Playgroud)

据我所知,这个类的构造函数将该类foo的另一个对象foo作为唯一的参数.我不清楚的是为什么我们*在前面使用arg.据我所知,当我们通过引用传递参数时,我们应该将函数的"体"中的这些参数视为正常变量(而不是变量的地址,我们不应该使用*).

Luc*_*ore 5

.操作符比间接(优先级较高*)运营商,所以你的代码被解析为

*(arg.impl_)
Run Code Online (Sandbox Code Playgroud)

impl_似乎是一个指针,因为你用new初始化它.要调用复制构造函数,您必须传递一个对象,而不是指针,因此您需要事先取消引用它.