[英]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.