0

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

4

2 回答 2

2

适用于类的相同规则也适用于结构。class和之间的唯一区别struct是默认访问级别,没有其他区别。

于 2012-06-24T17:32:16.360 回答
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
于 2012-06-24T17:39:30.673 回答