我对C ++比较陌生,想要采用现代实践。我一直试图了解sink 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);
}
...
}
我是否应该选择其中一种,无论是另一种?
答案 0 :(得分:0)
参考QStaticText
的界面,我们不清楚你为什么要使用指针(智能或其他)。 (我相信panta rei也在评论中注明了这一点。)看看Why Should I Use a Pointer Rather Than the Object Itself。
在这种情况下,最好有这样的东西:
class SomeClass
{
...
private:
QStaticText _text;
};
template<class Text>
void SomeClass::setText(const Text &newText)
{
_text = QStaticText(newText);
}
请注意以下事项:
QStaticText
仅针对不经常更改进行了优化。
它可以通过至少两种不同的类型构建。
很难看出你目前的计划获得了什么。对于每次更新,您无论如何都要创建多个对象,并且您无法重复使用它们(您将内容移出它们)。