【发布时间】:2020-08-13 20:02:50
【问题描述】:
我有一个存储 SquareMatrix 的 A 类。
class A{
private:
SquareMatrix mat;
};
该类经常使用 mat.size() (一个常数时间操作)来使用矩阵的大小。 mat.size() 确实是 A 大小的另一种度量。遵循良好的编码习惯,A 是否也应该存储 mat.size() 的副本?
class A{
private:
SquareMatrix mat;
int size;
};
【问题讨论】:
-
鉴于这个小而不完整的例子,我个人认为添加它没有任何好处。您在代码库中看到这样做有什么好处吗?在看到有或没有好处之后,您还会添加它吗?
-
“良好的编码习惯”?也许你的意思是为垫子的大小创建一个访问器/属性方法,例如
int GetSize() const {return mat.size();},但这仅假设 A 的 GetSize() 表示私有垫的大小。如果 GetSize() 不明确,GetMatSize() 可能是一个更好的名称。 -
还有一个问题(除了
should I)- 你可以吗?我的意思是,SquareMatrix的大小可以在不通知您的情况下更改吗?此问题类似于缓存失效。另外,如果SquareMatrix存储了它的大小(不需要每次都重新计算),我宁愿在需要时获取它。
标签: c++ datamember