Allow const member function to edit some member variable using mutable
我想应用Memoization技术来提高"Line"类的性能,如下所示:
1 2 3 4 5 6 7 8 9 10 | class line{ public: line() = default; ~line() = default; float segment_length() const; Tpoint first; Tpoint second; }; |
如您所见,成员函数
1 2 3 4 5 6 7 8 9 10 11 12 13 | class line{ public: line() = default; ~line() = default; float segment_length(); Tpoint first; Tpoint second; private: float norm_of_line_cashed = -1; //for optimization issue }; |
成员函数
问题:
在这种情况下,正确的方式是什么:
-
将
segment_length 保留为non-const 成员函数。 -
再次将其设为
const 并将norm_of_line_cashed 标记为mutable 。
我将
这遵循逻辑常量的概念而不是按位或物理常量。 您只修改了外部世界不可见的内部状态,因此即使您在技术上修改了类,也会保留逻辑常量。 这正是
一个注意事项:您可能希望有一些
*也许你的意思是"缓存"。