web-dev-qa-db-ja.com

C ++で構造体を破壊できますか?

構造を破壊する方法はありますか(notクラス)?

17
Ramilol

C++では、メンバーとベースのデフォルトの可視性を除いて、structclassとまったく同じです。したがって、クラスを「破棄」する方法がある場合は、まったく同じ方法を使用して構造を「破棄」できます。

だから、もしあなたがstruct s { } C++プログラムでは、次のことができます。

s *v = new s();
delete v; // will call structure's destructor.
30

デフォルトのアクセス指定子(クラスの場合は「private」、構造体の場合は「public」)を除いて、C++クラスと構造体では他のすべてが同じです。したがって、はい、クラスで行われるのと同じ方法で、structでデストラクタを記述して使用できます。

9
Arun

構造体は、デフォルトの可視性と継承が(プライベートではなく)パブリックであることを除いて、クラスと同じです。

したがって、次のように構造体を作成および破棄できます(クラスと同じ、または組み込み型)。

// Create on the heap, need to manually delete.
MyStruct *const pStruct = new MyStruct();
delete pStruct;

// Created on the stack, automatically deleted for you.
MyStruct struct;
5
Mark Ingram

構造体とクラスは同じものであり、2つの概念の違いが原因で発生する技術的な違い(デフォルトのアクセスフィールド)があります。ただし、クラスのようなすべての構造体は、オブジェクトを作成する必要があるときにコンストラクターを呼び出し、可視性フィールドが終了するときにデストラクタを呼び出します。

C++では、構造体はクラスよりも強力です。

2
Charlie