我对C++比较陌生,想采用现代实践。我一直在试图理解的时候,最好sink一个unique_ptr
,这里是一些代码,我有:什么时候接收unique_ptr
class SomeClass
{
...
private:
unique_ptr<QStaticText> _text;
}
{
...
void SomeClass::setText(unique_ptr<QStaticText> newText)
{
_text = move(newText);
}
void SomeClass::setText(const QStaticText& newText)
{
_text = make_unique<QStaticText>(newText);
}
...
}
我应该更喜欢一个比其他任何一个或另一个?
第二个应该是首选。但是为什么你不能直接拥有'QStaticText'成员还有点不清楚。 –
你的例子很糟糕,但总的想法是,当你想要转移所有权时,你接受或返回'unique_ptr'。当传输的资源无法复制(不可复制,昂贵,完整类型未知)时,这一点尤其重要,这也是您的示例如此糟糕的原因。如果您可以复制并分配'QStaticText',请不要使用指针。通常,避免使用'new',尽管它可能与Qt略有不同。 –
阅读Herb Sutter:智能指针参数:http://herbsutter.com/2013/06/05/gotw-91-solution-smart-pointer-parameters/ –