我有一个存储SquareMatrix的A类。
class A{
private:
SquareMatrix mat;
};
该类经常使用 mat.size()(常量时间操作)来使用矩阵的大小。 mat.size() 实际上是 A 大小的另一个度量。遵循良好的编码实践,A 是否也应该存储 mat.size() 的副本?
class A{
private:
SquareMatrix mat;
int size;
};
如果"mat.size() 确实是 A 大小的另一个度量">,则在此示例中存储表示A
大小的数据成员不是一个好主意。
这里的主要问题是:A::size
应该如何跟踪SquareMatrix::size()
的变化?此值可能会在很多地方发生变化,并且使它们保持同步将很棘手,即使您将其关闭也难以维护。
相反,为A
提供一个成员函数,该函数仅返回如下所示的mat.size()
结果:
class A{
private:
SquareMatrix mat;
public:
int size() const { return mat.size(); } // mat.size() IS A's size :)
};