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