如何正确地将unique_ptr传递给构造函数或函数?
你好!我最近开始学习C++11,并试图理解智能指针,特别是std::unique_ptr。我了解到它们可以帮助自动管理内存,不需要手动delete。但我遇到了一个问题:我不明白如何正确地将unique_ptr传递给函数和构造函数。
下面是我写的一个简单类:
```cpp
#include
#include
class MyClass {
public:
MyClass(std::unique_ptr ptr) : data(std::move(ptr)) {
std::cout << "Created with value: " << *data << std::endl;
}
private:
std::unique_ptr data;
};
void processData(std::unique_ptr ptr) {
std::cout << "Processing: " << *ptr << std::endl;
}
int main() {
auto p = std::make_unique(42);
// 如何将p传递给MyClass的构造函数?
// MyClass obj(p); // 错误!不能复制。
// MyClass obj(std::move(p)); // 这样正确吗?
// 如何传递给函数?
// processData(p); // 也是错误。
// processData(std::move(p));
}