unique_ptr直接赋值

时间:2013-05-23 00:54:05

标签: c++ unique-ptr

我有这样的功能:

unique_ptr<int> foo() {
    return unique_ptr<int>(new int[4])
}

当调用这个foo()时,我所做的是:

unique_ptr<int> t = foo()

我想知道这段代码有什么问题吗?我应该用些东西吗? 喜欢std :: move而不是直接分配?我可以通过引用返回唯一的ptr,例如:

unique_ptr<int>& foo() {
    return unique_ptr<int>(new int[4])
}

1 个答案:

答案 0 :(得分:3)

如果没有发生RVO,它将自动使用移动构造函数,所以这一切都很好。你肯定不想返回引用,因为它会摇摆不定。但请注意,无论如何都没有在这里进行任务。正如本杰明所指出的,既然你已经填写了省略号,你需要使用std::unique_ptr<int[]>来分配那种内存。