動的オブジェクト
オブジェクトも動的変数にすることがでます。
- 動的変数なのでnew演算子を使用します。
- 不要になった変数はdeleteで削除します。
- このときデストラクタが呼び出されます。
#include <iostream> // クラス定義 class Kitten { int age; char *name; public : Kitten( char *name, int age ); ~Kitten(); char *getName(); void setName( char *name ); void meow() { std::cout << name << std::endl; } }; Kitten::Kitten( char *name, int age ) { this->age = age; this->name = name; std::cout << name << " created." << std::endl; } Kitten::~Kitten( ) { std::cout << name << " destroyed." << std::endl; } char *Kitten::getName() { return name; } void Kitten::setName( char *name ) { this->name = name; } // メイン関数 int main() { // 動的にオブジェクトを生成。 // オブジェクトが作成され、そのポインタが返される。 // このときコンストラクタも実行される。 Kitten* kitten = new Kitten( "mii", 1 ); // ポインタが示すオブジェクトの関数を呼び出し。->を使う。 kitten->meow(); kitten->setName( "tora" ); kitten->meow(); // 動的変数を破棄。 // デストラクタが呼ばれる。 delete kitten; return 0; }
実行結果です。
mii created. mii tora tora destroyed.