第27講 クラスの学習その2☆☆
第3話 デストラクタ
前話問題解答例
#include<iostream>
using namespace std;

class Person{
public:
  int age,kokugo,syakai,suugaku,rika,eigo;
  char *name;
  Person(int age,char *name,int kokugo,int syakai,int suugaku,int rika,int eigo){
    this->age=age;
    this->name=name;
    this->kokugo=kokugo;
    this->syakai=syakai;
    this->suugaku=suugaku;
    this->rika=rika;
    this->eigo=eigo;
    cout<<name<<"インスタンスが生成された。"<<endl;
  }

};

void main(){
  Person taro(25,"太郎",58,65,54,85,45);
  cout<<"名前:"<<taro.name<<" "<<"年齢:"<<taro.age<<" 国語:"<<taro.kokugo;
  cout<<" 社会:"<<taro.syakai<<" 数学:"<<taro.suugaku<<" 理科:"<<taro.rika<<" 英語"<<taro.eigo<<endl;

  Person hanako(23,"花子",78,85,84,95,99);
  cout<<"名前:"<<hanako.name<<" "<<"年齢:"<<hanako.age<<" 国語:"<<hanako.kokugo;
  cout<<" 社会:"<<hanako.syakai<<" 数学:"<<hanako.suugaku<<" 理科:"<<hanako.rika<<" 英語"<<hanako.eigo<<endl;
}
実行画面例



次に、デストラクタについて学びましょう。
デストラクタは、発生させたインスタンス=オブジェクトを削除するものです。
デストラクタは、コンストラクタ名は
~クラス名
と決まっています。
先の、プログラムに
#include<iostream>
using namespace std;

class Person{
public:
  int age,kokugo,syakai,suugaku,rika,eigo;
  char *name;
  Person(int age,char *name,int kokugo,int syakai,int suugaku,int rika,int eigo){
    this->age=age;
    this->name=name;
    this->kokugo=kokugo;
    this->syakai=syakai;
    this->suugaku=suugaku;
    this->rika=rika;
    this->eigo=eigo;
    cout<<name<<"インスタンスが生成された。"<<endl;
  }
  
~Person(){cout<<name<<"インスタンスは削除された。"<<endl;}
};

void main(){
  Person taro(25,"太郎",58,65,54,85,45);
  cout<<"名前:"<<taro.name<<" "<<"年齢:"<<taro.age<<" 国語:"<<taro.kokugo;
  cout<<" 社会:"<<taro.syakai<<" 数学:"<<taro.suugaku<<" 理科:"<<taro.rika<<" 英語"<<taro.eigo<<endl;

  Person hanako(23,"花子",78,85,84,95,99);
  cout<<"名前:"<<hanako.name<<" "<<"年齢:"<<hanako.age<<" 国語:"<<hanako.kokugo;
  cout<<" 社会:"<<hanako.syakai<<" 数学:"<<hanako.suugaku<<" 理科:"<<hanako.rika<<" 英語"<<hanako.eigo<<endl;
}
~Person(){cout<<name<<"インスタンスは削除された。"<<endl;}を加えてみると、実行画面は次のようになります。

発生させた順とは反対に、インスタンスが削除されていることがわかります。
また、デストラクタもコンストラクタと同様に自動実行されることがわかります。



第2話へ 第4話へ

戻る

VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

L>