-4

違いと理由を教えてください??

4

3 に答える 3

6

C ++で構造が軽量で、クラスが重量級である理由

誰が言った?それは完全に間違ったステートメントです。

structとclassの違いは、のデフォルトのアクセシビリティstructpublicであるのに対し、のデフォルトのアクセシビリティclassはですprivate。それ以外は、structと同じclassです。

于 2012-08-28T15:41:17.743 に答える
5

プログラマーの頭脳がどのように機能するかのためです。

structCから来ており、元々classC ++がもたらしたメソッド、アクセスレベル、その他の特定のものはありませんでした。またpublic、C ++には、完全なOOPオブジェクトではなく、一部のメンバーのコンテナーに近いデフォルトのアクセスレベルがあります。

class一方、C ++によって導入され、上記のすべて(およびprivateデフォルトでアクセスレベル)を提供します。

もちろん、C ++には(デフォルトのアクセスレベル以外に)2つの違いはありません。したがって、これはほとんどの場合、軽量と重量のメタな言い方です。あなたが言うときclass、あなたは本質的にメソッド、プライベートメンバー、ポリモーフィズムと継承について考えます。structあなたがそれがメンバーとして2秒を持っていると思うとあなたが言うときint&それはそれです:)

于 2012-08-28T15:42:41.393 に答える
0

あなたの質問についてよくわかりません。たぶん、あなたは「仮想」のことについて尋ねています。C++ のクラス/構造に仮想テーブルを持つ可能性があります。それらをmemsetすることはできません。多くの問題が発生します。仮想テーブルには余分なメモリが必要なので、おそらくそれが「ヒーブ」である理由です...

http://www.programmerinterview.com/index.php/c-cplusplus/how-vtables-work/

また、C++ の構造体とクラスは、デフォルトで構造体にパブリック フィールドと関数があることを期待して同じであることを覚えておいてください。

于 2012-08-28T15:46:03.877 に答える