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