簡體   English   中英

帶指針的頂級const

[英]top-level const with pointers

假設我有一個帶有std::vector<Object*>

應該這樣的方法:

const std::vector<Object*> getSth() const
{
    return class_member_vector;
}

轉換為:

std::vector<Object*> getSth() const
{
    return class_member_vector;
}

它始終是安全的,應該始終以這種方式進行糾正?

是的,為清晰起見,您應該使用第二種變體。 是的,這始終是安全的。 在這兩種變體中,您都按值返回返回值,因此,修改返回的向量不會影響該類。 同樣在這兩種情況下,被調用方都可以修改向量元素指向的對象,因此外部const也不會在其中起作用。

第一個變體中的const具有誤導性,應將其刪除。

但是出於性能原因,您可能需要考慮返回const std::vector<Object*>&引用。 這是否一個好主意取決於類的使用模型(例如,生存期,范圍)。 在性能方面,通過const引用返回是個好主意,因為所有STL容器都會進行深層復制,而這是相當昂貴的。

暫無
暫無

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

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