我一直认为struct是一个固定大小的对象,虽然似乎没有任何明显的编译器错误,但我想知道是否这样做通常是很好的做法。将结构更改为类更合理,或者将结构做得更好?是否有可能/建议将矢量存储在结构中? C++
的代码,只是因为人们得到挑剔:
struct Sprite
{
float x;
float y;
std::vector<Sprite> sprite;
}
我在做什么是有一个班级的孩子一样类型父的本质。当父母去世时,孩子们也是这样。
我一直认为struct是一个固定大小的对象,虽然似乎没有任何明显的编译器错误,但我想知道是否这样做通常是很好的做法。将结构更改为类更合理,或者将结构做得更好?是否有可能/建议将矢量存储在结构中? C++
的代码,只是因为人们得到挑剔:
struct Sprite
{
float x;
float y;
std::vector<Sprite> sprite;
}
我在做什么是有一个班级的孩子一样类型父的本质。当父母去世时,孩子们也是这样。
std::vector
具有特定的已知大小,并且包含它的任何类或结构都具有特定的已知大小。 std::vector
在堆上分配内存以充当可变大小的数组并存储指向所述内存的指针。结构和类之间唯一的区别是结构默认是公共的,而类默认是私有的。
谢谢。这绝对有意义,该向量只能作为堆中的内存指针。感谢您的详细回复。 –
默认?默认? – Inverse
struct
和class
之间的差异与成员可见的事:最显着的区别是,struct
的成员默认为公用,并且也是struct
的继承默认情况下公开;默认情况下,class
成员和class
继承都是私有的。除此之外,没有任何区别:您可以始终使用struct
编写代码,生成的代码等效于使用class
编写的代码,反之亦然。
'struct'只是一个默认可见性为public而不是'private'的类。 –
请注意,使用构造函数/析构函数将成员添加到结构中时,编译器也会为该结构发出构造函数/析构函数。暗示POD结构的C风格技术将无法工作。 –
在结构中存储矢量并不会使其更改大小。 Vector的项目存储在堆中,所以无论向量是0还是1000个元素,struct的大小都保持不变。 – mfontanini