0

1)什么是c++中的二进制封装,c++是否支持二进制封装?

我进行了一些搜索,但我发现的只是封装,这大致就是将数据和方法包装在一个类中。

2)那么封装和二进制封装有什么区别?

4

2 回答 2

4

这段文字的引用应该可以澄清事情:

尽管 C++ 确实通过其私有和受保护的关键字支持语法封装,但 C++ 草案标准没有二进制封装的概念。这是因为 C++ 的编译模型要求客户端的编译器能够访问有关对象布局的所有信息,以便实例化类的实例或进行非虚拟方法调用。这包括有关对象的私有和受保护数据成员的大小和顺序的信息。

澄清一下:语法封装是当您使用语言语法进行封装时。在 C++ 中,这将是私有/受保护的关键字。

我通过这个线程找到了文本,它也对这个概念进行了简短的解释。

编辑:

正如下面所指出的,C++ 中可以存在二进制封装。有关更多信息,请参阅此关于不透明指针的wiki 页面。

于 2012-10-09T08:34:26.573 回答
1
  1. 封装有两种类型:语法封装和二进制封装。
  2. C++ 不支持二进制封装。它只支持语法封装。
  3. COM 支持二进制封装。
  4. 二进制封装的最佳示例是 COM 的 QueryInterface(void **) 方法。
  5. 由于此方法采用一个输出参数作为 void **。所以它是双重重定向,因为指针是 void **。
  6. 要了解有关此内容的更多详细信息,请阅读 Don Bix 的 Inside COM。
于 2021-06-04T07:47:37.503 回答