C++ 声明属性C++;通过引用或指针
我想声明类的一些属性。我正在考虑为我想要在类中使用的属性创建私有变量 然后通过引用公开私有变量。但是我有一个指针,我们也可以传递私有变量的地址。因此类的用户可以修改变量 那么,通过引用或指针(如下面的示例所示)哪种方式更好呢C++ 声明属性C++;通过引用或指针,c++,pointers,reference,C++,Pointers,Reference,我想声明类的一些属性。我正在考虑为我想要在类中使用的属性创建私有变量 然后通过引用公开私有变量。但是我有一个指针,我们也可以传递私有变量的地址。因此类的用户可以修改变量 那么,通过引用或指针(如下面的示例所示)哪种方式更好呢 class ExampleClass { private: int age; public: //This function allows access via reference int& GetAgeByReference()
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;
}
}
最好两者都不做:
public:
int GetAge() { return age; }
void SetAge(int age) { this->age = age; }
通过这种方式,您可以添加健全性检查,如年龄不为负,并更改基础实现,而无需更改类的所有用户。通过引用返回,原因有两个:
nullptr
(但不会)。引用不能为null,因此用户知道他们将始终获得一个有效的对象(假设该对象行为良好)是否应该像这样泄漏对象的内部是另一回事。只要有一个get和set方法。
Get:应该是一个常量方法,并返回
const ref
/const int&GetAgeByReference()const{}代码>
设置:根据需要获取一个const
ref并返回void或bool
//void SetAgeByReference(const int&)
@KerrekSB:谢谢你发现了这个错误。我很匆忙地写了这篇文章。如果你通过访问器授予完全访问权,为什么不把它变成一个公共变量呢?你意识到,通过返回一个非常量引用,你实际上违反了数据隐藏的原则?这似乎是一个非常复杂的设计。请不要写这么多的问题匆忙。