通过引用或值返回类的大数据成员
Return large data members of a class by reference or value
在getter类型的方法中,我想知道哪个是最好的,关于这一点的意见似乎各不相同,因为一方面你通过引用返回打破了封装,但另一方面,如果你想要成员首先是可变的,那么按值返回会带来很多开销。在这些情况下,总是通过引用返回,让被调用方根据上下文决定是否要创建副本,这不是最好的方法吗?
我认为返回const引用将是您最好的选择。这样可以避免复制大量数据的开销,但也不允许外部进行更改。
现代编译器可以优化按值返回并消除任何复制/移动开销[1][2]。所以你不用担心这个。
决定有一个副本或返回一个引用应该是API设计者的规则,而不是客户端,你应该告诉这个对象是否应该是可变的,并根据这个类的用例和它应该满足的要求来定义你的API。
1。复制省略
2。RVO
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 数据成员SFINAE的C++17测试:gcc vs clang
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 如何在c++中定义以struct为数据成员的类中的构造函数
- 静态数据成员模板专用化的实例化点在哪里
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 使用指针访问数组中的对象数据成员
- 友元函数无法访问私有数据成员 (c++)
- 我可以在 C++ 中将数据成员/变量从其定义之外添加到结构中吗?
- 为什么将一个结构的引用设置为等于另一个结构只会更改一个数据成员?
- 返回带有另一个类的数据成员的构造函数?遇到转换错误?
- 返回指向 const 数据成员和 'auto' 关键字的 const 指针。有点困惑
- 将基元类型的数据成员作为常量引用返回
- 返回对类静态数据成员的引用的正确方法是什么?(我正在使用Qt,以防万一它有所作为)
- c++数据成员在单独的成员函数中定义后返回垃圾
- 我应该如何打印出返回类型为char的string和int的数据成员?
- 返回对数据成员的引用
- 通过引用或值返回类的大数据成员
- 当函数返回类数据成员时,我如何返回其他东西