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.据我所知,当我们通过引用传递参数时,我们应该将函数的"体"中的这些参数视为正常变量(而不是变量的地址,即我们不应该使用*).
该.操作符比间接(优先级较高*)运营商,所以你的代码被解析为
*(arg.impl_)
Run Code Online (Sandbox Code Playgroud)
impl_似乎是一个指针,因为你用new初始化它.要调用复制构造函数,您必须传递一个对象,而不是指针,因此您需要事先取消引用它.