0

今日、C 構造体のステートメントに気付きました。正直なところ、最初は WTF のようでした。それは似ています。

struct foo {
void *private;
//Some other members
};

信じられないかもしれませんが、この構造体はエラーなしでコンパイルされています。では、そのような行 (void *private) を追加する目的は何ですか?

4

3 に答える 3

3

純粋な C にはprivateキーワードがないため、上記は完全に合法ですが、非常に悪い考えです。

ただし、これは無効な C++ であり、C++ コンパイラは確実にエラーを生成します。

于 2013-05-23T22:54:32.877 に答える
1

void*C では、使用される実際のデータ型を隠すためによく使用され、実装の詳細をインターフェイスから効果的に隠します。

于 2013-05-23T22:57:03.783 に答える
0

実際、C と C++ の重要な違い、つまり構造体の実装方法に出くわしました。

C では、構造体にはプリミティブ データ型と複合データ型しか含めることができませんが、C++ の構造体は C の構造体よりもクラスに似ているため、より多くの機能を提供します。したがって、次のような追加機能を提供します。

  • メンバーを非公開、公開、または保護に分類する機能。
  • メンバー関数を含めることができます。
  • C++ の構造体は、クラスに適用可能な継承などのすべての OO 機能が構造体にも適しているため、オブジェクト指向メソッドを強制するためのツールとして使用できます。

つまり、上記のコードは有効な C ですが、無効な C++ です。

于 2013-05-24T01:55:19.100 に答える