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