簡體   English   中英

C++中的二進制封裝?

[英]Binary encapsulation in C++?

1)c++中什么是二進制封裝,c++支持二進制封裝嗎?

我做了一些搜索,但我發現的只是封裝,大致就是將數據和方法包裝在一個類中。

2)那么封裝和二進制封裝有什么區別呢?

這段文字的引述應該可以解決問題:

盡管 C++ 確實通過其私有和受保護關鍵字支持句法封裝,但 C++ 草案標准沒有二進制封裝的概念。 這是因為 C++ 的編譯模型要求客戶端的編譯器能夠訪問有關對象布局的所有信息,以便實例化類的實例或進行非虛擬方法調用。 這包括有關對象的私有和受保護數據成員的大小和順序的信息。

澄清一下:句法封裝是當您使用語言語法進行封裝時。 在 C++ 中,這將是私有/受保護的關鍵字。

我通過此線程找到了文本,其中也對該概念進行了簡短解釋。

編輯:

正如下面所指出的,C++ 中可以存在二進制封裝。 有關更多信息,請參閱有關不透明指針的此 wiki 頁面

  1. 有兩種類型的封裝語法封裝和二進制封裝。
  2. C++ 不支持二進制封裝,只支持語法封裝。
  3. COM 支持二進制封裝。
  4. 二進制封裝的最佳示例是 COM 的 QueryInterface(void **) 方法。
  5. 由於此方法將一個輸出參數作為 void **。 所以它是雙重重定向,因為指針是 void **。
  6. 要獲得有關此內容的更多詳細信息,請閱讀 Don Bix 的 Inside COM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM