Uniq_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])
}

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

相关内容

  • 没有找到相关文章

最新更新