違いと理由を教えてください??
3 に答える
C ++で構造が軽量で、クラスが重量級である理由
誰が言った?それは完全に間違ったステートメントです。
structとclassの違いは、のデフォルトのアクセシビリティstruct
はpublic
であるのに対し、のデフォルトのアクセシビリティclass
はですprivate
。それ以外は、struct
と同じclass
です。
プログラマーの頭脳がどのように機能するかのためです。
struct
Cから来ており、元々class
C ++がもたらしたメソッド、アクセスレベル、その他の特定のものはありませんでした。またpublic
、C ++には、完全なOOPオブジェクトではなく、一部のメンバーのコンテナーに近いデフォルトのアクセスレベルがあります。
class
一方、C ++によって導入され、上記のすべて(およびprivate
デフォルトでアクセスレベル)を提供します。
もちろん、C ++には(デフォルトのアクセスレベル以外に)2つの違いはありません。したがって、これはほとんどの場合、軽量と重量のメタな言い方です。あなたが言うときclass
、あなたは本質的にメソッド、プライベートメンバー、ポリモーフィズムと継承について考えます。struct
あなたがそれがメンバーとして2秒を持っていると思うとあなたが言うときint
&それはそれです:)
あなたの質問についてよくわかりません。たぶん、あなたは「仮想」のことについて尋ねています。C++ のクラス/構造に仮想テーブルを持つ可能性があります。それらをmemsetすることはできません。多くの問題が発生します。仮想テーブルには余分なメモリが必要なので、おそらくそれが「ヒーブ」である理由です...
http://www.programmerinterview.com/index.php/c-cplusplus/how-vtables-work/
また、C++ の構造体とクラスは、デフォルトで構造体にパブリック フィールドと関数があることを期待して同じであることを覚えておいてください。