通过引用或指针声明属性C ++

时间:2014-01-31 17:48:47

标签: c++ pointers reference

我想声明一个类的一些属性。我正在考虑为类中我想要的属性创建私有变量。

然后通过引用公开私有变量。但是我通过指针也可以传递私有变量的地址。因此,类的用户可以修改变量。

那么通过引用或指针哪种方式会更好?如下例所示?

class ExampleClass
{

  private:
    int age;

  public:
    //This function allows access via reference
    int& GetAgeByReference()
      { 
         int& refAge= age;
         return refAge;
      }
    //This function allows access via pointer
    int* GetAgeByPointer()
      { 
         int* pointAge= &age; 
         return pointAge; 
      }


}

3 个答案:

答案 0 :(得分:5)

最好不要这样做:

  public:
    int GetAge() { return age; }
    void SetAge(int age) { this->age = age; }

通过这种方式,您可以添加健全性检查,例如年龄不是负面的,并且无需更改类的所有用户即可更改基础实现。

答案 1 :(得分:3)

以参考方式返回有两个原因:

  1. 通过指针返回会建议nullptr可以返回(但不会)。引用不能为null,因此用户知道它们总是会获得一个有效的对象(假设它表现良好)。
  2. 通过指针返回将使该函数的用户想知道所指向的对象的所有权。引用告诉用户他们可以使用此对象执行他们喜欢的操作,并且他们不需要进行任何类型的内存管理。
  3. 你是否应该像这样泄漏对象的内部是另一回事。

答案 2 :(得分:0)

只需要一个get和set方法。

获取:应该是一个常量方法并返回const ref // const int & GetAgeByReference() const {};
设置:获取const参考并根据需要返回void or bool。 // void SetAgeByReference(const int &)