確認プログラム
クラスの配列をコンポジットしている時のデストラクタの動きを見るためにサンプルを書いた。
Garbage Collectionみたいのが必要になるやも・・・
#include <iostream> using namespace std; class data { private: static int m_num; int m_id; public: data() { ++m_num; m_id = m_num; } ~data() { cout << "id = " << m_id << " ~data Start" << endl; cout << "id = " << m_id << " ~data End" << endl; } int getNum() { return m_num; } }; int data::m_num = 0; class part { private: int m_id; data* m_data; public: part() { } ~part() { cout << "id = " << m_id << " ~part Start ---------" << endl; if( m_data != NULL ) delete m_data; m_data = NULL; cout << "id = " << m_id << " ~part End -----------" << endl; } void Init() { m_data = new data(); m_id = m_data->getNum(); } }; class partArray { private: part m_part[10]; public: partArray() { } ~partArray() { cout << "~partArray Start -------------------------" << endl; cout << "~partArray End ---------------------------" << endl; } void Init() { for( int i = 0; i < 10; i++ ) { m_part[i].Init(); } } }; int main() { partArray array; array.Init(); return 0; }