调用struct default析构函数?

时间:2012-06-24 17:31:06

标签: c++ struct destructor

在C ++中,由于您可以将类实例作为结构中的成员,因此编译器具有隐式析构函数,就像清理它们的类一样。当我使用固定内存的new-operator将对象分配到我自己的内存中并且需要清理它时,我可以调用类的析构函数,但是如果我以相同的方式分配结构怎么办?我知道一个解决方法是调用struct中每个类实例的析构函数,只是想知道是否有办法。

2 个答案:

答案 0 :(得分:2)

适用于类的相同规则也适用于结构体。 classstruct之间的唯一区别是默认访问级别,而不是其他。

答案 1 :(得分:1)

没有区别; classstruct基本相同:

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