c++ - 在 C++ 中调用 this->get/this->set 方法与直接访问成员变量

标签 c++

假设我有一个类 Foo,它有一个私有(private)变量 bar_,其中包含 Foo 的一些状态。如有必要,我可以为 bar_ 编写公共(public) get/set 方法。当然,我会尽可能避免这种情况以保持封装性。

假设我有这些 get/set 方法,每当我必须在属于 Foo 的方法中访问或修改 bar_ 时,我通常直接对 进行bar_,而不是使用我用于从类外部访问 bar_ 的 get/set 方法。除了担心直接访问变量与调用方法的速度之外,我没有其他理由,但我怀疑如果 get/set 方法是内联定义的(它们是内联的),它应该不会有什么不同。这有什么不同吗? const在这方面有影响吗?

到目前为止,我对此没有任何问题,但我有一种挥之不去的感觉,我做错了。是否有任何令人信服的理由可以证明不这样做?有关于此的指导方针吗?

最佳答案

我知道这有点离谱,但我讨厌 get/set 方法。 讨厌他们。几乎从不写。

一般来说,一个类应该提供比直接和简单地读取和修改内部状态变量更多的高级操作,或者它应该让开并像 struct 那样行事。

即使我要写一个,我也几乎不会类里面使用它。它们的重点是您可以在不影响客户的情况下更改事物的内部表示。在类内部,它是您关心的内部表示! 如果您很想在类中使用自己的接口(interface)对类执行大量操作,您可能有第二个类在努力摆脱困境。

关于c++ - 在 C++ 中调用 this->get/this->set 方法与直接访问成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2374009/

相关文章:

c++ - 从 Direct3D11CaptureFrame 转换为 OpenCV 的 cv::Mat

c# - 用于良好编程实践的 Visual Studio 工具

c++ - C++ 类声明中的 CP_EXPORT

c++ - boost::format 形式的 c 字符串或 std::string

c++ - 成员函数的正式定义

C++ - 导致错误的 vector

c++ - 在排序数组中查找旋转点

c++ - 在不接触第二维的情况下对二维数组进行排序

c++ - strstream 和 stringstream 的区别

c++ - 如何正确链接 .a 库文件及其标题?