0

我希望用户不必自己创建智能指针来传递给对象构造函数,而是传入原始指针,然后在初始化过程中转换为智能指针。但是,有一些关于创建内存泄漏的警钟响起,所以我想检查一下:以下代码是否有任何问题?


#include <memory>

using namespace std;

class A {
private:
    std::unique_ptr<int> num;

public:
    explicit A(int* n){
        num = std::make_unique<int>(*n);
    }
};

int main(){
    int n = 4;
    A a(&n); 
    // A a(std::make_unique<A>(n)); // instead of having to do this, which is a moderately irritating 

};

4

1 回答 1

2

如果要避免接口中的智能指针,可以按值或常量引用使用:

class A {
private:
    std::unique_ptr<int> num;

public:
    explicit A(int n) : num(std::make_unique<int>(n)) {}
};
于 2020-04-19T09:14:38.263 回答