1. ホーム
  2. c++

[解決済み] C/C++ 構造体とクラス

2022-08-02 11:18:09

質問

C++の授業を終えて、構造体/クラスはいくつかの小さな違いを除いてほとんど同じであるように感じました。

C 言語でプログラミングをしたことはありませんが、C 言語に構造体があることは知っています。C では、他の構造体を継承し、public/private の修飾子を設定することは可能でしょうか。

普通の C 言語でこれができるなら、一体なぜ C++ が必要なのでしょうか?クラスは構造体と何が違うのでしょうか?

どのように解決するのですか?

C++で 唯一の違いは、クラスのアクセス修飾子 (メンバ変数、メソッド、およびベース クラス) のデフォルトが private であるのに対し、構造体のアクセス修飾子のデフォルトは public であることです。

しかし C では では、構造体は単なる(公開)データの集合体であり、他のクラスのような機能(メソッド、コンストラクタ、基底クラスなど)を持ちません。 C++ はこのキーワードを継承していますが、セマンティクスを拡張しています。 (ただし、構造体のデフォルトが public であるのはこのためです。) C の構造体のように書かれた構造体は、構造体のように振る舞います。

例えば、最初のパラメーターとして構造体へのポインターを取る関数を定義する、あるいは 時折 構造体をサブクラス/スーパークラスとするように強制するなど、C 言語ではいくつかの OOP を偽ることができますが、それは常にボルトで固定されているようなもので、実際には言語の一部ではありません。