我一直认为结构体是一个固定大小的对象,虽然似乎没有任何明显的编译器错误,但我想知道这样做是否通常是好的做法。将结构更改为类更可取,还是结构也一样?
代码,只是因为人们变得挑剔:
struct Sprite
{
float x;
float y;
std::vector<Sprite> sprite;
}
我正在做的事情的本质是让一个类的子类与父类相同。当父母去世时,孩子们也会这样做。
答案 0 :(得分:15)
std::vector
具有特定的已知大小,并且包含它的任何类或结构具有特定的已知大小。 std::vector
在堆上分配内存以充当可变大小的数组并存储指向所述内存的指针。 struct和class之间的唯一区别是struct默认是public,而class默认是private。
答案 1 :(得分:7)
struct
和class
之间的差异与成员可见性有关:最明显的区别是struct
的成员默认是公开的,还有{{1}默认情况下,继承是公共的;默认情况下,struct
成员和class
继承都是私有的。除此之外,没有区别:您始终可以使用class
编写代码,生成与使用struct
编写的代码等效的代码,反之亦然。