2012/06/20

C++ new, delete演算子でインスタンス化

C言語のmelloc()とfree()のC++版がnewとdeleteになる。newはメモリ確保時にコンストラクタ、deleteはデストラクタが呼び出せるのでC++では基本的にこちらを使う。

new演算子でインスタンス化

#include <iostream>
//クラス
class Aclass{
public:
  Aclass();
  ~Aclass();
  void method();
};
//コンストラクタ
Aclass::Aclass(){
  std::cout << "constructor\n";
}
//デストラクタ
Aclass::~Aclass(){
  std::cout << "destructor\n";
}
//メンバ関数
void Aclass::method(){
  std::cout << "Aclass::method()\n";
}

//メイン関数
int main(void){
  //ポインタ宣言
  Aclass *oAclass;
  //newでメモリ確保、そのアドレスをポインタへ
  oAclass = new Aclass();
  //上記をこのように1行で書いてもOK
  //Aclass *oAclass = new Aclass(); 
  //ポインタなのでこのように扱う
  oAclass->method();
  //この書き方でもOK
  //(*oAclass).method(); 
  //メモリ解放
  delete oAclass;
  return 0;
}
ひとつのクラスをnewでインスタンス化し、deleteでメモリ解放している。
constructor
Aclass::method()
destructor


C++言語 Meadow & MinGW GCC 目次