0

1)c ++でのバイナリカプセル化とは何ですか?c ++はバイナリカプセル化をサポートしていますか?

私はいくつかの検索を行いましたが、私が見つけたのはカプセル化だけでした。これは大まかに言って、クラス内のデータとメソッドのラップに他なりません。

2)では、カプセル化とバイナリカプセル化の違いは何ですか?

4

2 に答える 2

4

このテキストからの引用は物事を明確にするはずです:

C ++はプライベートキーワードと保護されたキーワードを介して構文カプセル化をサポートしますが、C++ドラフト標準にはバイナリカプセル化の概念がありません。これは、C ++のコンパイルモデルでは、クラスのインスタンスをインスタンス化するため、または非仮想メソッド呼び出しを行うために、クライアントのコンパイラがオブジェクトレイアウトに関するすべての情報にアクセスできる必要があるためです。これには、オブジェクトのプライベートデータメンバーと保護されたデータメンバーのサイズと順序に関する情報が含まれます。

明確にするために:構文カプセル化は、言語構文を使用してカプセル化する場合です。C ++では、これはプライベート/保護されたキーワードになります。

このスレッドで、概念についても簡単に説明されているテキストを見つけました。

編集:

以下で指摘するように、C++にはバイナリカプセル化が存在する可能性があります。詳細については、不透明ポインターに関するこのwikiページを参照してください。

于 2012-10-09T08:34:26.573 に答える
1
  1. カプセル化構文カプセル化とバイナリカプセル化には2つのタイプがあります。
  2. C ++は、バイナリカプセル化をサポートしていません。構文カプセル化のみをサポートしています。
  3. バイナリカプセル化はCOMでサポートされています。
  4. バイナリカプセル化の最良の例は、COMのQueryInterface(void **)メソッドです。
  5. このメソッドは1つの出力パラメーターをvoid**として受け取ります。したがって、ポインタが無効であるため、二重リダイレクトになります**。
  6. 詳細については、DonBixによるInsideCOMをご覧ください。
于 2021-06-04T07:47:37.503 に答える