gpt4 book ai didi

c++ - 未封装意味着不可更改?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:16 26 4
gpt4 key购买 nike

我在 Effective C++ 中遇到了这一行:

Public means unencapsulated, and practically speaking, unencapsulated means unchangeable, especially for classes that are widely used.Yet widely used classes are most in need of encapsulation, because they are the ones that can most benefit from the ability to replace one implementation with a better one

作者所说的“公开的就是不封装的,实际上讲的是不封装的就是不可改变的”是什么意思?

以及未封装的如何保持不变?

最佳答案

总体思路很简单。如果你公开一些东西,那么有人可以而且很可能会使用它。因此,如果您更改某些公开的内容,所有使用它的代码都会立即中断。破坏人们的代码是不好的;这往往会导致他们不想再使用你的代码,因为现在你已经强制他们重写他们所有的东西,只是因为你想使用不同的类型或其他东西。

公共(public)接口(interface)是类的实现和它的用户之间的契约。更改契约(Contract),尤其是在没有提前通知的情况下,被认为是非常粗鲁的。

如果您的所有代码都是内部代码,那很好。但如果不是,如果您正在制作供其他人使用的库(无论是在本地还是仅销售库),那么人们就不太可能对界面变化感到高兴。

这不是 C++ 规则的问题;这只是界面设计规则的问题。由于公开内容是界面的一部分,因此您必须谨慎对待公开的内容。

关于c++ - 未封装意味着不可更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6555866/

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