如果您通过公共方法返回对私有数据成员的指针或非常量引用,则将其设为私有是没有意义的。您也可以公开该属性。
这基本上意味着您允许在类之外操作成员。IMO 这被认为是一种不好的做法,甚至是一种反模式,因为该类不能依赖于它自己的状态。这个非常重要。
例如:假设你有一个指针,有人将它设置为null
. 即使是私有方法也需要检查它,即使在内部这种状态是不可能达到的。
返回普通成员(例如类)被认为是一种不好的做法,因为它涉及复制整个对象。通常最好返回一个引用或者最好是 const 引用。
反过来,吸气剂将允许您设置const
约束。在这两种情况下,指针和引用。
另请注意,在这种情况下,通常提供两种方法。compute
和get
。目前您只能通过计算访问您的会员!
我不会建议您切换到,std::vector
因为我不知道您需要什么,而且向量并不适合所有事情。所以坚持使用指针,这是安全的方法:
class A
{
private:
double **CR;
public:
double const * const * compute2D();
double const * const * getCR();
};
double const * const * A::compute2D(){
return CR;
}
double const * const * A::compute2D(){
/*Heave CPU stuff*/
return CR;
}
int main(){
A a;
double const* const* tmp = a.compute2D();
tmp[1][2] = 0; //this will fail to compile
tmp[1] = 0; //this will fail too
double get_test = tmp[1][2]; // this passes!
}
注意双重const
限定符。保护每一级指针引用很重要。