今日、C 構造体のステートメントに気付きました。正直なところ、最初は WTF のようでした。それは似ています。
struct foo {
void *private;
//Some other members
};
信じられないかもしれませんが、この構造体はエラーなしでコンパイルされています。では、そのような行 (void *private) を追加する目的は何ですか?
純粋な C にはprivate
キーワードがないため、上記は完全に合法ですが、非常に悪い考えです。
ただし、これは無効な C++ であり、C++ コンパイラは確実にエラーを生成します。
void*
C では、使用される実際のデータ型を隠すためによく使用され、実装の詳細をインターフェイスから効果的に隠します。
実際、C と C++ の重要な違い、つまり構造体の実装方法に出くわしました。
C では、構造体にはプリミティブ データ型と複合データ型しか含めることができませんが、C++ の構造体は C の構造体よりもクラスに似ているため、より多くの機能を提供します。したがって、次のような追加機能を提供します。
つまり、上記のコードは有効な C ですが、無効な C++ です。