構造を破壊する方法はありますか(notクラス)?
C++では、メンバーとベースのデフォルトの可視性を除いて、struct
はclass
とまったく同じです。したがって、クラスを「破棄」する方法がある場合は、まったく同じ方法を使用して構造を「破棄」できます。
だから、もしあなたがstruct s { }
C++プログラムでは、次のことができます。
s *v = new s();
delete v; // will call structure's destructor.
デフォルトのアクセス指定子(クラスの場合は「private」、構造体の場合は「public」)を除いて、C++クラスと構造体では他のすべてが同じです。したがって、はい、クラスで行われるのと同じ方法で、structでデストラクタを記述して使用できます。
構造体は、デフォルトの可視性と継承が(プライベートではなく)パブリックであることを除いて、クラスと同じです。
したがって、次のように構造体を作成および破棄できます(クラスと同じ、または組み込み型)。
// 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;
構造体とクラスは同じものであり、2つの概念の違いが原因で発生する技術的な違い(デフォルトのアクセスフィールド)があります。ただし、クラスのようなすべての構造体は、オブジェクトを作成する必要があるときにコンストラクターを呼び出し、可視性フィールドが終了するときにデストラクタを呼び出します。
C++では、構造体はクラスよりも強力です。