C ++では、クラスのメンバーのデフォルトの可視性はprivateであるのに、構造体のデフォルトの可視性はpublicであるのはなぜですか?
68263 次
3 に答える
97
C ++はCのスーパーセットとして導入されました。構造体はCから引き継がれ、メンバーのセマンティクスはパブリックのセマンティクスでした。構造体を使用するC++でも動作することが望まれるライブラリを含め、多くのCコードが存在します。クラスはC++で導入され、カプセル化のOO哲学に準拠するために、それらのメンバーはデフォルトでプライベートになっています。
于 2009-08-08T01:56:52.323 に答える
9
クラスはオブジェクト指向を行う通常の方法であるため、メンバー変数はプライベートでパブリックアクセサーを持つ必要があります。これは、低結合を作成するのに適しています。一方、構造体はC構造体と互換性がある必要があります。C構造体は常にパブリックであり(Cにはパブリックとプライベートの概念はありません)、アクセサー/ミューテーターを使用しません。
于 2009-08-08T01:57:27.127 に答える
2
おそらくC構造体との下位互換性のためです。このように、Cコードで宣言された構造体は、C++コードで使用された場合も同じように機能し続けます。
于 2009-08-08T01:56:40.480 に答える