通过引用将 unique_ptr 传递给函数

passing unique_ptr to a function by reference

我注意到我正在编译的某个库中的行为有点出乎意料,我想澄清一下。

有一个 class 具有以下形式的方法:

void notify(Frame & frame);

现在,有一个调用者使用 unique_ptr 如下:

std::unique_ptr <Frame> localFrame (new Frame(rows, cols));

现在当它调用它执行的方法时:

obj->notify(*localFrame);

所以这依赖于将底层指针隐式转换为引用。

我的问题是这是跨平台和预期的行为吗?我做这样的事情有什么用吗:

obj->notify(*localFrame->get());

"Some implicit conversion" 是 std::unique_ptr::operator*,这是一个非常标准的运算符,returns 是对指向对象的引用。你不需要把它复杂化。