C++ 構造体にメンバー関数を持たせることはできますか? 質問する

C++ 構造体にメンバー関数を持たせることはできますか? 質問する

構造体とクラスの違いについてかなり混乱していました。ほとんど同じ目的で使用されているように思えたからです。違いについて Google で検索したところ、構造体にはデフォルトでパブリック メンバーがあり、クラスにはデフォルトでプライベート メンバーがあるという答えしか見つかりませんでした。しかし、講師からは構造体にはメンバー関数を含めることはできないと教えられました。しかし、インターネットでは、構造体にメンバー関数を含めて、特にそうしても問題ないと言っているスレッドをたくさん見ました。

私の講師は、構造体は定義上関数を持つことができないと断固として主張しているようですが、一体何が起こっているのでしょうか? 唯一考えられるのは、コンパイラが構造体内の関数を別のものに変更して、技術的には関数が含まれないようにしているのではないかということです... これらの矛盾に対する明確な答えはあるのでしょうか?

ベストアンサー1

違いをグーグルで検索したところ、構造体にはデフォルトでパブリック メンバーがあり、クラスにはデフォルトでプライベート メンバーがあるという答えしか見つかりませんでした。

はい、その通りです。さらに、構造体のベースはデフォルトでパブリックに継承されますが、クラスのベースはデフォルトでプライベートに継承されます。

関数を構造体のメンバーとして宣言することは、あなたが指摘した違いを除けば、関数をクラスのメンバーとして宣言することとまったく同じ意味を持ちます。いずれの場合も、それらは次のように呼ばれます。メンバー関数

おすすめ記事