C ++ getter临时与const参考

塔120

我有一些上课的人,可以存储向量。我为此而得

class Data{
  private:
    std::vector<Point*> points;

  public:
    inline std::vector<Point*> getPoints(){
      return points;
     }

}

当我调用getPoints()时,它将返回临时对象吗?还是只会复制它?
还是我应该返回const reference呢?

更新


如果我还有另一个类来保存我的数据,又有一个吸气剂,该怎么办:

class Controller{
private:
  Data *data;

public:
  inline std::vector<Point*> getPoints(){
     return data->getPoints();
  }
}

如果我不希望它们都被复制,它们是否都应该是const引用?

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

您的方法会复制points对向量本身的修改不会传播到points您的类内部。您可以返回一个const引用来避免复制。呼叫者可以根据需要复制,但可以控制。

请注意,返回向量时创建的副本较浅。这意味着暴露了各个点:如果调用者对点进行了修改(而不是对向量进行修改),则这些修改将传播到类中向量所指向的点。

保护Points的内容要困难得多-它将需要您进行手动复制。它还需要您的呼叫者进行手动释放。不过,总的来说,最好使用智能指针(std::unique_ptrstd::shared_ptr)来简化资源管理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

const参考与内联getter-C ++

来自分类Dev

C ++ const函数与参考

来自分类Dev

getter中的C ++ const

来自分类Dev

C ++ const参考参数优化

来自分类Dev

C ++ getter函数:const和非const

来自分类Dev

C ++修改const指针参考值

来自分类Dev

C ++何时在转发参考上使用const参考

来自分类Dev

在C ++中的getter中使用const

来自分类Dev

C ++将非const引用为临时的:合法吗?

来自分类Dev

C ++模板化右值Ctor与Const参考Ctor

来自分类Dev

在将对象作为const参考传递时构建对象C ++

来自分类Dev

在C ++ 11中,应返回临时返回const或non const的函数

来自分类Dev

Cython无法导入和执行函数:存储临时Python参考的不安全C派生

来自分类Dev

为什么Clang让我在C ++ 03模式下通过非const临时引用?

来自分类Dev

临时T是否应作为参数在C ++ 11中调用T(const T&)或T(T &&)?

来自分类Dev

绑定到参数和返回值const引用的C ++临时对象

来自分类Dev

令人困惑的旧版C ++编译器中的** const&中的临时引入

来自分类Dev

在c ++中传递内联临时类需要为const。如何解决这个问题

来自分类Dev

临时T是否应作为参数在C ++ 11中调用T(const T&)或T(T &&)?

来自分类Dev

绑定到成员初始化器列表(C ++ 14)中的参考成员的临时对象的生存期

来自分类Dev

重载参考与const参考

来自分类Dev

使用const bool参考进行后台任务取消跟踪?(C ++)

来自分类Dev

C ++成员参考基本类型'Vertex * const'不是结构或联合

来自分类Dev

const转发参考给出错误C2440:“正在初始化”:无法从“ const std :: string”转换为“ const std :: string &&”

来自分类Dev

通过将它绑定到本地const引用,可以在?:表达式中创建C ++临时对象吗?

来自分类Dev

C中的临时变量

来自分类Dev

C ++中的临时对象

来自分类Dev

循环临时变量C ++

来自分类Dev

从多个临时对象创建参考

Related 相关文章

  1. 1

    const参考与内联getter-C ++

  2. 2

    C ++ const函数与参考

  3. 3

    getter中的C ++ const

  4. 4

    C ++ const参考参数优化

  5. 5

    C ++ getter函数:const和非const

  6. 6

    C ++修改const指针参考值

  7. 7

    C ++何时在转发参考上使用const参考

  8. 8

    在C ++中的getter中使用const

  9. 9

    C ++将非const引用为临时的:合法吗?

  10. 10

    C ++模板化右值Ctor与Const参考Ctor

  11. 11

    在将对象作为const参考传递时构建对象C ++

  12. 12

    在C ++ 11中,应返回临时返回const或non const的函数

  13. 13

    Cython无法导入和执行函数:存储临时Python参考的不安全C派生

  14. 14

    为什么Clang让我在C ++ 03模式下通过非const临时引用?

  15. 15

    临时T是否应作为参数在C ++ 11中调用T(const T&)或T(T &&)?

  16. 16

    绑定到参数和返回值const引用的C ++临时对象

  17. 17

    令人困惑的旧版C ++编译器中的** const&中的临时引入

  18. 18

    在c ++中传递内联临时类需要为const。如何解决这个问题

  19. 19

    临时T是否应作为参数在C ++ 11中调用T(const T&)或T(T &&)?

  20. 20

    绑定到成员初始化器列表(C ++ 14)中的参考成员的临时对象的生存期

  21. 21

    重载参考与const参考

  22. 22

    使用const bool参考进行后台任务取消跟踪?(C ++)

  23. 23

    C ++成员参考基本类型'Vertex * const'不是结构或联合

  24. 24

    const转发参考给出错误C2440:“正在初始化”:无法从“ const std :: string”转换为“ const std :: string &&”

  25. 25

    通过将它绑定到本地const引用,可以在?:表达式中创建C ++临时对象吗?

  26. 26

    C中的临时变量

  27. 27

    C ++中的临时对象

  28. 28

    循环临时变量C ++

  29. 29

    从多个临时对象创建参考

热门标签

归档