7章 コンストラクタとデストラクタ

http://www.geocities.jp/ky_webid/cpp/language/007.html

なにやら難しそうな話が出てきましたね。

コンストラクタは、そのクラスをインスタンス化したときに、自動的に呼び出される特別なメンバ関数です。

?がいっぱいです。そもそもインスタンス化って、何?この後詳しく説明があるのかな。

デストラクタはなんとなくわかります。

次にデストラクタですが、これはクラスのインスタンスが解体されるときに、解体の直前で自動的に呼び出されます。解体されるタイミングは、そのインスタンスのスコープを抜けるときです。例えば、ある関数内でインスタンス化した場合、その関数を抜ける段階で解体されます。

要するに、ローカル変数が破棄されるタイミングでってことですね。

さて、このコンストラクタとデストラクタ。最後のサンプルを見てインスタンス化という言葉の意味もわかりました。

ようは定義されたらってことみたいですね。

とりあえず自分で実装もしてみます。

#include <iostream>

class CSample {
public:
    CSample();
    ~CSample();
};

CSample::CSample() {
    std::cout << "コンストラクタ" << std::endl;
}

CSample::~CSample() {
    std::cout << "デストラクタ" << std::endl;
}

int main () {
    CSample obj;
    std::cout << "あばばば" << std::endl;
    return 0;
}
$ main
コンストラクタ
あばばば
デストラクタ

おお、なんだか凄いですね。

これは色々楽しそうなプログラムが組めそうです。

ただでもあれですね。コンストラクタやデストラクタには引数は渡せないのでしょうか。

まあ特殊なメンバ関数なので、そもそもどこで渡せばいいのかって話ですね。多分無理なんでしょう。