类中有一个std::unique_ptr<int> number;对象,后面函数中如何初始化?
时间: 2024-10-13 19:02:10 浏览: 30
lemonxx:Lemon解析器生成器,具有更好的c ++ 11支持
在类中使用`std::unique_ptr<int>`时,你可以按照如下方式初始化并传递到后续函数中:
1. 创建一个新的`unique_ptr`实例,分配内存:
```cpp
class MyClass {
private:
std::unique_ptr<int> number;
public:
MyClass() {
number.reset(new int); // 或者直接number = std::make_unique<int>();
}
void processNumber() {
// 在这个函数中处理unique_ptr
*number = 42; // 修改数字
}
};
```
2. 如果需要在构造函数外部传递一个`unique_ptr`,可以使用移动语义:
```cpp
void anotherFunction(MyClass& obj) {
// 使用std::move确保不会泄露原始对象的资源
obj.number = std::move(obj.number);
obj.processNumber();
}
```
在这个例子中,`anotherFunction`接收`MyClass`的引用,并通过`std::move`更新`number`,这样就安全地重用了`unique_ptr`。
阅读全文