6

重複の可能性:
C++ の構造体とクラスの違いは何ですか?

C ++で「C構造体」を使用することが本質的に役に立たないかどうかを理解しようとしています。それらを使用することで何か得られますか (単に別のクラスを作成するのではなく)?

C では、構造体のポイントは明らかです。グループ化されたデータの連続した割り当てと、そのデータにアクセスするための優れた方法です。C++ では、役割がもう少し曖昧になると感じています。

構造体、インスタンス変数、および可視性ラベルのメンバーである関数を使用できることを考えると、C++ の構造体とクラスの間に見られる唯一の実際の違いは、構造体メンバーがデフォルトでパブリックに設定され、クラス メンバーがデフォルトでプライベートに設定されることです。私の見方では、実際には両方ともまったく同じ基本システムで実装できます。

C++ での構造体の目的に関して、ここで何かが欠けていますか? それとも、C++ の場合のように目的を失ったのでしょうか?

4

6 に答える 6

3

C ++のクラスと構造体はほとんど同じですが、それらを分離する唯一の点は、クラスのデフォルトの可視性がprivate構造体にある間であるということpublicです。

C ++で構造を維持する理由は、おそらく言語をCと互換性を保つためであり、CコードをC ++に移植するか、プログラマーがその移行を行う方が簡単です。

構造体コントラクラスの使用法については、Cの場合と同じように個人的に使用して、関連する変数を1つの「オブジェクト」にグループ化します。

于 2012-10-27T20:20:05.557 に答える
3

私の意見では、Structuresはクラスで実装できないものを提供しません。ただし、cとの下位互換性を保つために、構造体はC++で保持されます。

于 2012-10-27T20:20:34.420 に答える
2

間違いなくそれらが存在する理由はCとの互換性のためです。しかし、C ++のクラスと構造体にはわずかな違いがありますが、クラスでは実行できない構造体では実行できないことはありません(その逆も同様です)。

個人的には、同じ宣言がCで合法である場合にのみ構造体を使用して、私が行っていることのCのような性質を強調します。

于 2012-10-27T20:22:02.363 に答える
2

それら「まったく同じ基本システムで」実装されます。実際、keywordを使用して型を宣言し、classkeywordを使用して定義することができますstruct。基本的に、これらは、すでに述べた概念上の違い、つまりデフォルトのアクセス権を除けば、まったく同じです。

なぜそれらを「役に立たない」と呼ぶのかはわかりません。キーワードの使用法は、個人的な好みやコーディング標準の問題になりました。「structPODタイプから使用する」または「structカプセル化/アクセス制御のないタイプに使用する」のように。

+の組み合わせと同等であるため、同じ程度の成功で、組み込み->演算子を「役に立たない」と宣言できます。*.

于 2012-10-27T20:22:56.183 に答える
1

Cと同じ動作をすることができ、追加の「クラス」機能の使用を強制することはありません。したがって、Cでの目的を理解していれば、C ++でも理解できるはずです(少なくとも「Cのような」部分)。

于 2012-10-27T20:22:24.577 に答える
1

Joachim Pileborgがすでに指摘しているように、クラスと構造はC++でもほとんど同じです。

structただし、パブリックメンバーを持つ「ダム」データホルダー、およびclassスタイル規則として適切にカプセル化されたクラスに使用することをお勧めします。

于 2012-10-27T20:23:41.270 に答える