唯一指针(unique_ptr)维护了 C 中唯一所有权的原则 11. 处理时使用唯一的指针作为函数或构造函数参数,会出现几个具有不同的选项
Base(std::unique_ptr<Base> n) : next(std::move(n)) {}
此方法将唯一指针的所有权转移到函数/对象。指针的内容被移入函数中,操作后原始指针为空。
Base(std::unique_ptr<Base> &n) : next(std::move(n)) {}
允许该函数可以访问并可能声明唯一指针的所有权。但是,这种行为并不能得到保证,需要检查函数的实现以确定其对指针的处理。
Base(std::unique_ptr<Base> const &n);
防止函数声明唯一指针的所有权。指针可以访问,但不能存储或修改。
Base(std::unique_ptr<Base> &&n) : next(std::move(n)) {}
与通过非常量 L 值引用传递相当,但在传递非临时参数时需要使用 std::move 。函数可能会或可能不会声明所有权,从而使其难以预测。
移动唯一指针指针,使用 std::move。不允许复制唯一指针:
std::unique_ptr<Base> newPtr(std::move(oldPtr));
以上是我应该如何在 C 中将唯一指针作为函数或构造函数参数传递?的详细内容。更多信息请关注PHP中文网其他相关文章!