[解決済み] C++のstructとclassの違いは何ですか?
2022-03-20 18:16:36
質問
この質問は C#/.Netのコンテキストで既に質問されています。 .
さて、C++の構造体とクラスの違いについて教えていただきたいのですが。技術的な違いや、OO設計でどちらかを選択する理由についても教えてください。
まず、わかりやすい違いから説明します。
-
を指定しない場合は
public:
またはprivate:
構造体のメンバはデフォルトでpublic、クラスのメンバはデフォルトでprivateです。
この他にも、C++の仕様の隅々にまで違いがあるはずだ。
どのように解決するのか?
クラスと構造体の2番目の違いを忘れていませんか?
規格を引用します(C++98からC++11の§11.2.2)。
がない場合 アクセス指定子 ベースクラスはpublicとみなされます。 派生クラスが宣言されたとき 構造体 と宣言されている場合はprivateと見なされます。 クラス .
また、念のため、より広く知られているクラスと構造体の違いは(11.2)で定義されています。
で定義されたクラスのメンバです。 キーワード クラス は プライベート である。 デフォルトでは を定義したクラスのメンバは というキーワードで 構造体 または ユニオン は パブリック をデフォルトで使用します。
その他の違い:キーワード
class
はテンプレートのパラメータを宣言するために使うことができますが
struct
キーワードは使用できません。
関連
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる