簡體   English   中英

QSharedPointer作為方法參數或方法的返回值的良好實踐?

[英]Good practice for QSharedPointer as method parameter or return value of a method?

關於如何使用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對象的更改。 但是,我必須采取嚴格的方法嗎?

按值傳遞它。

你說在第二個選項中(如果你通過引用返回),你將“避免”引用計數器的增量。 你是對的,這意味着當它超出范圍時(例如在另一個線程中),你冒着刪除對象的風險。

而且......那將是我唯一的(好)理由。 有人可能會說,通過價值傳遞是更昂貴的,但我只是讓他們記住關於旺動的速度? 通過價值。

還要注意的是有關於如何使用智能指針一個很好的答案在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM