Fer*_*zsa 5 c++ qt qsharedpointer
关于如何使用QSharedPointer对象作为方法参数或方法的返回值,是否有任何良好的实践或规则?
按价值:
LMNode::setParent(QSharedPointer<LMNode> parent)
{
this->parent = parent;
}
QSharedPointer<LMNode> LMNode::getParent()
{
return this->parent;
}
Run Code Online (Sandbox Code Playgroud)
或参考更好:
LMNode::setParent(const QSharedPointer<LMNode>& parent)
{
this->parent = parent;
}
const QSharedPointer<LMNode>& LMNode::getParent()
{
return this->parent;
}
Run Code Online (Sandbox Code Playgroud)
当然,在第二个版本中,我避免了参考计数器的增量和QSharedPointer对象的变化.但是,我必须采取严格的方法吗?
IAm*_*PLS -1
我会按值传递它。
您说过,在第二个选项中(如果您通过引用返回),您将“避免”引用计数器的增量。你是对的,这意味着当对象超出范围时(例如在另一个线程中),你将面临删除该对象的风险。
而且......这将是我唯一的(好的)理由。有人可能会说按价值传递成本更高,但我会让他们记住想要速度?按值传递。
另请注意,这里有一个关于如何使用智能指针的非常好的答案。
| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |