将unique_ptr传递给函数后,可以通过以下几种方式使用:
示例代码:
void foo(std::unique_ptr<int> ptr) {
// 使用ptr
// ...
}
int main() {
std::unique_ptr<int> ptr(new int(42));
foo(std::move(ptr));
// 此时ptr已经失效,不再拥有资源的所有权
return 0;
}
示例代码:
void foo(int* ptr) {
// 使用ptr
// ...
}
int main() {
std::unique_ptr<int> ptr(new int(42));
foo(ptr.get());
// 注意:此时ptr仍然拥有资源的所有权,需要在适当的时候释放资源
return 0;
}
示例代码:
void foo(int* ptr) {
// 使用ptr
// ...
delete ptr; // 手动释放资源
}
int main() {
std::unique_ptr<int> ptr(new int(42));
int* rawPtr = ptr.release();
foo(rawPtr);
// 注意:此时ptr不再拥有资源的所有权,需要手动释放资源
return 0;
}
总结:在将unique_ptr传递给函数后,可以使用move语义、get()函数获取原始指针或者release()函数释放所有权的方式进行使用。具体选择哪种方式取决于函数对资源所有权的需求。
领取专属 10元无门槛券
手把手带您无忧上云