哪个是更好的Get成员方法?

ont*_*cks 2 c++ class vector accessor stdvector

我有一个类有成员的类 std:vector

  private:
     std::vector<int> myVector;
Run Code Online (Sandbox Code Playgroud)

我创建了Get方法来访问 myVector

1. const std::vector<int>   GetMyVector() const;
2. const void   GetMyVector(std::vector<int>& vec) const;
Run Code Online (Sandbox Code Playgroud)

实现分别如下:

1. const std::vector<int> MyClass::GetMyVector() const
   {
       return  myVector;
   }

2. const void MyClass::GetMyVector(std::vector<int>& vec) const
   {
       vec =  myVector;
   }
Run Code Online (Sandbox Code Playgroud)

两种Get方法中哪一种更好,为什么?

sim*_*onc 8

我更喜欢选项3:

const std::vector<int>& MyClass::GetMyVector() const
{
    return  myVector;
}
Run Code Online (Sandbox Code Playgroud)

您的选项1返回了一份副本myVector.这将返回对类成员的const(so read-only)引用.

  • @EmilioGaravaglia当然有不同级别的封装(假设引用是数据成员).引用和值是完全不同的东西.调用者无法通过引用修改数据这一事实并未改变他们对可能发生变化甚至消失的内容的引用这一事实. (2认同)