gpt4 book ai didi

c++ - 带指针的顶级 const

转载 作者:行者123 更新时间:2023-11-28 04:24:50 25 4
gpt4 key购买 nike

假设我的类(class)有 std::vector<Object*>

应该这样的方法:

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

转换为:

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

它总是安全的,应该始终以这种方式纠正?

最佳答案

是的,为了清楚起见,您应该使用第二个变体。是的,这总是安全的。在这两种变体中,您都按值 返回返回值,因此类不会受到修改返回 vector 的影响。同样在这两种情况下,被调用者都可以修改 vector 元素指向的对象,因此外部 const那里也没有什么区别。

const第一个变体具有误导性,应将其删除。

但您可能要考虑返回一个 const std::vector<Object*>&出于性能原因的引用。这是否是一个好主意取决于您对类的使用模型(例如生命周期、范围)。就性能而言,通过 const 引用返回是个好主意,因为所有 STL 容器都会生成成本相当高的深拷贝。

关于c++ - 带指针的顶级 const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54599719/

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