コンストラクタとデストラクタ
提供: C++入門
スポンサーリンク
目次
概要
クラス は、コンストラクタとデストラクタと呼ばれるメンバを持ちます。 クラスをインスタンス化するときにコンストラクタが呼び出されます。 インスタンスが解放されたり、スコープ外になったときに、デストラクタが呼び出されます。
コンストラクタの役割は、インスタンスの初期化です。メンバ変数の初期化処理などを請け負います。
デストラクタの役割は、インスタンスの終了処理です。メモリの解放やファイルのクローズなどをやってもらうことができます。
クラスにおけるコンストラクタ
クラスのコンストラクタは、クラス名と同じ名前を持ちます。
class C { public: // コンストラクタ C() { } };
オーバーロードのために複数のコンストラクタを持つことができます。
class C { public: int m_i; // コンストラクタ C() { } C(int i): m_i(i) { } };
クラスのデストラクタは、クラス名の前にチルダ(~)をつけた名前を持ちます。
クラスにおけるデストラクタ
class C { public: // デストラクタ ~C() { } };
コンストラクタとデストラクタの省略
コンストラクタとデストラクタは、不要であれば、省略できます。
class C { public: void foo() { } };
コンストラクタとデストラクタの例
ソースコード class_scope.cpp
#include <iostream> using namespace std; class Foo { public: Foo() { cout << __PRETTY_FUNCTION__ << endl;} ~Foo() { cout << __PRETTY_FUNCTION__ << endl;} void doit() { cout << __PRETTY_FUNCTION__ << endl;} }; int main(int argc, char const* argv[]) { Foo f; f.doit(); return 0; }
コンパイル
g++ class_scope.cpp -o class_scope
実行例
メイン関数が呼び出されると Foo のインスタンスが作成されます。 インスタンスが作成されたときに、コンストラクタが呼び出されます。 メイン関数のスコープが終わるときにFooのインスタンスのデストラクタが呼び出されます。
% ./class_scope Foo::Foo() void Foo::doit() Foo::~Foo()
関連項目
ツイート
スポンサーリンク