gpt4 book ai didi

c++ - 可观察

转载 作者:搜寻专家 更新时间:2023-10-31 00:04:45 26 4
gpt4 key购买 nike

什么意思:对象的可观察状态?
我昨天在阅读“Exceptional C++”第 43 项的解决方案,其中有一个片段:

私有(private): void InvalidateArea() { area = -1; }

即使这个函数修改了对象的内部状态,它也应该是常量。为什么?因为这个函数不会修改对象的可观察状态。我们在这里做一些缓存,但这是一个内部实现细节,对象在逻辑上是常量,即使它在物理上不是常量。

推论:成员变量 area 应该声明为可变的。如果你的编译器还不支持可变的,用一个 area_ 的 const_cast 来解决这个问题,并写一条评论告诉下一个人一旦可变可用就删除 const_cast——但是一定要把函数设为 const._

像往常一样感谢您的回答。

最佳答案

Observable state 是指该对象可以被外部对象观察到的状态。内部缓存只会更改对象的私有(private)状态,但不会对对象的用户造成任何可观察到的差异(访问速度等非功能​​性问题除外)。

关于c++ - 可观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3626551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com