gpt4 book ai didi

c++ - QSharedPointer 作为方法参数或方法返回值的良好做法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:07 28 4
gpt4 key购买 nike

关于如何使用QSharedPointer 对象作为方法参数或方法的返回值,有什么好的做法或规定吗?

按值:

LMNode::setParent(QSharedPointer<LMNode> parent)
{
this->parent = parent;
}

QSharedPointer<LMNode> LMNode::getParent()
{
return this->parent;
}

或更好的引用:

LMNode::setParent(const QSharedPointer<LMNode>& parent)
{
this->parent = parent;
}

const QSharedPointer<LMNode>& LMNode::getParent()
{
return this->parent;
}

当然,在第二个版本中我避免了引用计数器的增加和 QSharedPointer 对象的改变。但是是否有严格的方法来满足我的要求?

最佳答案

我会按值传递它。

您说过在第二个选项中(如果您通过引用返回),您将“避免”引用计数器的递增。你是对的,这意味着当对象超出范围时(例如在另一个线程中),你冒着删除对象的风险。

而且...那将是我唯一的(好的)理由。有人可能会争辩说按值(value)传递的成本更高,但我会让他们记住 Want speed? Pass by value.

另请注意,关于如何使用智能指针有一个很好的答案 here .

关于c++ - QSharedPointer 作为方法参数或方法返回值的良好做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46100887/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com