11

私は常に構造体を固定サイズのオブジェクトと考えてきました。明らかなコンパイラ エラーはないようですが、これを行うことが一般的に良い方法であるかどうか疑問に思っていました。構造体をクラスに変更する方が賢明でしょうか、それとも構造体でも同じようにできますか?

人々がうるさいという理由だけで、コード:

struct Sprite
{
    float x;
    float y;
    std::vector<Sprite> sprite;
}

私がやっていることの本質は、クラスの子を親と同じタイプにすることです。親が死ぬと子供も死ぬ。

4

2 に答える 2

16

Anstd::vectorには特定の既知のサイズがあり、それを含むクラスまたは構造体には特定の既知のサイズがあります。std::vector可変サイズの配列として機能するようにヒープにメモリを割り当て、そのメモリへのポインタを格納します。構造体とクラスの唯一の違いは、構造体はデフォルトでパブリックであり、クラスはデフォルトでプライベートであることです。

于 2012-06-12T22:41:21.327 に答える
7

との違いは、メンバーの可視性に関係structclassています。最も顕著な違いは、structのメンバーがデフォルトで公開されていることと、structの継承がデフォルトで公開されていることです。classメンバーとclass継承は、デフォルトでどちらも非公開です。それ以外に違いはありません。structで書かれたコードと同等のコードを生成するコードを でいつでも書くことができclass、その逆も可能です。

于 2012-06-12T22:42:35.977 に答える