gpt4 book ai didi

c++ - 访问者与公共(public)成员

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:52 27 4
gpt4 key购买 nike

我有一个类,其中包含许多具有读/写访问权限的内置类型成员。我应该让他们成为公共(public)成员并为每个成员提供获取/设置方法吗?结构如何?

最佳答案

拥有访问器( getter )和修饰器( setter )的全部原因是为您提供额外的间接级别。

这种额外的间接级别允许您向公共(public)接口(interface)提供变量的只读 View ,同时不允许更改数据成员。您仍然可以使用私有(private)或 protected setter。

setter 允许您在设置值时进行特殊的错误检查、验证和更正。例如 setDirectory(const std::string &strPath),如果用户没有指定,您可以确保有一个终止斜杠。这可确保您的类状态始终有效。

Getter 还可以保护您的成员不让他们暴露以允许指向他们的指针。通过不允许从外部指向它们的指针,您可以确保如果您的对象超出范围,它不会导致崩溃。

getter/setter 的额外间接级别还允许您更改它们封装的数据成员。

使用 getter 还可以获得数据的不同 View ,例如:getMinutes,当您的数据成员实际存储时以秒为单位。

这不是使用它们的原因,但使用 getter 和 setter 的一个很好的副作用是您可以在修饰符内设置一个断点,例如以准确查看它何时更改。

是否应该使用它们取决于您的需要。如果你有太多的成员以至于提供 getter 和设置是一件非常痛苦的事情,你可以考虑将数据成员存储在一个结构中,然后在你的类中使用该结构。您甚至可以一次性为整个结构的对象提供 getter/setter。

关于c++ - 访问者与公共(public)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/670958/

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