我有一个这样的函数:
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])
}
如果没有RVO发生,它将自动使用move构造函数,所以一切都很好。您肯定不希望返回引用,因为它会摇摆不定。请注意,这里无论如何都没有完成任何作业。正如Benjamin指出的那样,现在您已经填好了省略号,您需要使用std::unique_ptr<int[]>
来分配这种类型的内存。