我想声明一个类的一些属性。我正在考虑为类中我想要的属性创建私有变量。
然后通过引用公开私有变量。但是我通过指针也可以传递私有变量的地址。因此,类的用户可以修改变量。
那么通过引用或指针哪种方式会更好?如下例所示?
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;
}
}
答案 0 :(得分:5)
最好不要这样做:
public:
int GetAge() { return age; }
void SetAge(int age) { this->age = age; }
通过这种方式,您可以添加健全性检查,例如年龄不是负面的,并且无需更改类的所有用户即可更改基础实现。
答案 1 :(得分:3)
以参考方式返回有两个原因:
nullptr
可以返回(但不会)。引用不能为null,因此用户知道它们总是会获得一个有效的对象(假设它表现良好)。你是否应该像这样泄漏对象的内部是另一回事。
答案 2 :(得分:0)
只需要一个get和set方法。
获取:应该是一个常量方法并返回const ref
// const int & GetAgeByReference() const {};
设置:获取const
参考并根据需要返回void or bool
。 // void SetAgeByReference(const int &)