gpt4 book ai didi

c++ - 如果成员函数影响逻辑状态而不是按位状态,它们应该是 "const"吗?

转载 作者:可可西里 更新时间:2023-11-01 16:56:39 24 4
gpt4 key购买 nike

我正在编写一个类来包装控制硬件设备的遗留 C API。在一个简化的例子中,我可能有这样的东西:

class device
{
public:
void set_request(int data) { legacy_set_req(p_device, data); }
int get_response() const { return legacy_get_rsp(p_device); }
private:
device_handle_t *const p_device;
};

类本身没有按位状态;因此,我可以选择将 set_request() 声明为 const,编译器会对此感到满意。但是,从语义的角度来看,考虑到它会影响对象的可观察 行为,这是否是正确的方法? (即封装的硬件设备非常确实有状态。)

最佳答案

我认为 const 应该反射(reflect)逻辑 const-ness,无论内部表示如何。仅仅因为您的对象只包含一个指向会发生变化的东西的指针,并不意味着您的所有成员函数都应该是 const

C++ 甚至有内部表示的 mutable 概念,即使在概念上对象不需要更改,也需要更改。 const 关键字显然不是为了表示“按位”const-ness。

关于c++ - 如果成员函数影响逻辑状态而不是按位状态,它们应该是 "const"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208184/

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