1

我有这样的功能:

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

1 回答 1

3

如果没有发生 RVO,它将自动使用移动构造函数,所以一切都很好。您绝对不想返回引用,因为它会悬空。请注意,无论如何这里都没有完成任何任务。正如 Benjamin 指出的那样,既然您已经填写了省略号,您需要使用std::unique_ptr<int[]>来分配那种内存。

于 2013-05-23T00:55:35.733 回答