0

C++ では、クラス インスタンスを構造体のメンバーとして持つことができるため、コンパイラにはそれらをクリーンアップするためのクラスと同様の暗黙のデストラクタがあります。固定メモリの new-operator を使用して自分のメモリにオブジェクトを割り当て、それをクリーンアップする必要がある場合、クラスのデストラクタを呼び出すことができますが、同じ方法で構造体を割り当てるとどうなるでしょうか? 回避策の 1 つは、構造体の各クラス インスタンスのデストラクタを呼び出すことです。

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 に答える