在C ++中,由于您可以将类实例作为结构中的成员,因此编译器具有隐式析构函数,就像清理它们的类一样。当我使用固定内存的new-operator将对象分配到我自己的内存中并且需要清理它时,我可以调用类的析构函数,但是如果我以相同的方式分配结构怎么办?我知道一个解决方法是调用struct中每个类实例的析构函数,只是想知道是否有办法。
答案 0 :(得分:2)
适用于类的相同规则也适用于结构体。 class
和struct
之间的唯一区别是默认访问级别,而不是其他。
答案 1 :(得分:1)
没有区别; class
和struct
基本相同:
class Bar { /* .. */ };
struct Foo
{
Bar x;
};
char arena[HUGE];
Foo * p = ::new (arena) Foo; // construct
p->~Foo(); // destroy; calls the destructor for p->x as expected