我有一个查询内部状态对象的类:
class State {...}; //Has a copy and move constructor
class Processor
{
private:
std::unique_ptr<State> state;
public:
void process(...)
{
State newState;
... //create this new state
state.reset(new State(newState));
}
State getState()
{
return std::move(*state.release());
}
};
这是适当的使用std::move
吗?我可以保证getState
每次调用只会调用一次process
,但由于这个特定系统的设计,我不能只newState
从process
. Stack Overflow 和其他地方的许多其他答案都说最好只返回对象,因为编译器无论如何都会移动它或 RVO 它,但这些都是在返回的对象是函数本地的情况下.
我不一定需要将状态对象放在 unique_ptr 后面,但这似乎是管理新状态对象的最简单方法。我的实际实现最后有一个指针直接转移到 unique_ptr 。