冗余数据成员
Redundant Data Members
我有一个 class A 存储一个 SquareMatrix。
class A{
private:
SquareMatrix mat;
};
class 经常使用 mat.size() (常数时间操作)矩阵的大小。 mat.size() 确实是 A 大小的另一种度量。按照良好的编码习惯,A 是否也应该存储 mat.size() 的副本?
class A{
private:
SquareMatrix mat;
int size;
};
如果 "mat.size( ) 确实是 A.
大小的另一种度量
这里的主要问题是:A::size
应该如何跟踪对 SquareMatrix::size()
的更改?这个值可能会在很多地方发生变化,让它们保持同步会很棘手,即使你做到这一点也很难维护。
相反,为 A
提供一个 成员函数 ,它只是 returns mat.size()
的结果,如下所示:
class A{
private:
SquareMatrix mat;
public:
int size() const { return mat.size(); } // mat.size() IS A's size :)
};
我有一个 class A 存储一个 SquareMatrix。
class A{
private:
SquareMatrix mat;
};
class 经常使用 mat.size() (常数时间操作)矩阵的大小。 mat.size() 确实是 A 大小的另一种度量。按照良好的编码习惯,A 是否也应该存储 mat.size() 的副本?
class A{
private:
SquareMatrix mat;
int size;
};
如果 "mat.size( ) 确实是 A.
大小的另一种度量这里的主要问题是:A::size
应该如何跟踪对 SquareMatrix::size()
的更改?这个值可能会在很多地方发生变化,让它们保持同步会很棘手,即使你做到这一点也很难维护。
相反,为 A
提供一个 成员函数 ,它只是 returns mat.size()
的结果,如下所示:
class A{
private:
SquareMatrix mat;
public:
int size() const { return mat.size(); } // mat.size() IS A's size :)
};