2009-08-08 9 views

答えて

61

C++はCの構造体のスーパーセットは、そのメンバーのセマンティクスは公共のものだったC、から持ち越されたとして導入されました。構造体を使用するC++でも動作することが望まれていたライブラリを含め、Cコードがたくさんあります。クラスはC++で導入され、オブジェクト指向のカプセル化の哲学に準拠するため、メンバーはデフォルトで非公開です。

+0

まあ、カプセル化がすべてのメンバーをプライベートにすることは厳密には必要ではありません。 C++インライン化では、アクセサーメソッドは非常に安価になる可能性がありますが、関数呼び出しのオーバーヘッドを考慮した多くのOOP言語では、人々は公共アクセスを安価に使用する傾向があります。より細かい制御のために、langがそれをサポートするならば、プロパティ宣言を使うことができます。ただし、ネイティブコードでは、管理されている言語よりも変数の変更を追跡するのが難しいため、コード内の1つのポイントで属性を設定することは理にかなっています。 – progician

1

。このようにしてCコードで宣言された構造体は、C++コードで使用されている場合と同じように動作します。

7

クラスはオブジェクトのオリエンテーションを行う通常の方法です。つまり、メンバ変数はプライベートでpublicアクセサーを持つ必要があります。これはlow couplingを作成するのに適しています。一方、Structsは常にpublicであるC構造体と互換性がなければなりません(C言語のpublicとprivateの概念はありません)。また、アクセサ/ミューテータを使用しないでください。

関連する問題