Q&A
構造体とクラスのどちらを使うか迷ってしまうことありませんか?
どちらにどのような利点があるのか教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答3件
3
ベストアンサー
C++におけるclassとstructは、既定のアクセス制限がprivateかpublicかの違いだけで、機能的には同じです。
使い分けとしては、基本的にはclassを使い、データ主体でメンバ変数を公開して使うようなものにはstructを使えば良いかと思います。メソッドの有無はclassとstructの使い分けにはあまり関係ないように思います。
また、私の場合、ユーティリティ集的にstaticメソッドのみを実装するときや、「インターフェイスクラス」として使う場合も、既定で公開のstructを使っています。
投稿2015/12/24 12:34
編集2015/12/24 15:39総合スコア5936
1
クラスと構造体は、全く概念的に違うものですが、C++での違いは、アクセス制御の初期値が異なる事だけです(C++11からは違うみたいですが)。
なのでどちらを使っても文法上は問題ないのですが、POD型のデータ構造を定義するとき以外は、クラスを使うのが良いと思います。POD型のデータ構造でも、メソッドを追加する可能性が高ければクラスにした方が良いでしょう。
最近はあまり見ませんが、C++では構造体を継承したクラスを作ることも可能です。
投稿2015/12/24 10:47
総合スコア1038
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
0
共有メモリ、バイナリファイル、通信などデータ構造がきっちり決まっているものは構造体を使います。アライメントやパックを気にしなければ行けない場合は特に。
投稿2015/12/24 22:48
総合スコア3579
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Q&A
解決済
【Rails】モデルのカラムの型でjsonとは何か?
回答2
クリップ0
更新
2023/05/30
Q&A
受付中
「リスコフの置換原則」はインターフェースでも適用されますか?
回答2
クリップ0
更新
2023/05/23
Q&A
解決済
Laravel10でview composerを作成したら、エラーが発生してしまいました。
回答1
クリップ0
更新
2023/05/28
意見交換
クローズ
プログラミングの設計が分からない
回答24
クリップ11
更新
2023/04/17
Q&A
解決済
jQueryで条件を満たしてないように見えるのに発火してしまう。
回答2
クリップ0
更新
2023/05/25
Q&A
解決済
関数の呼び出しについて
回答2
クリップ0
更新
2023/05/26
Q&A
受付中
out単体の意味とその関係
回答2
クリップ0
更新
2023/05/26
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。