C++ Constructor Delegate - コンストラクタからコンストラクタを呼び出す ― 2020年04月13日 11時03分28秒
コンストラクタ・デリゲイトにより、コンストラクタからコンストラクタを呼び出せる様になり、コードの重複とデータメンバ初期化の重複を防げる。呼び出し時には、初期化リストを通じてのみ呼び出せる。
実際に利用してみる。
そして、こちらが実行例。
#include <iostream>
class C
{
int count_;
public:
C(): C( -1 )
{
count_ = 0;
std::cout << "by default " << count_ << std::endl;
}
C( int i ): count_( i )
{
std::cout << "by int " << count_ << std::endl;
}
};
int main()
{
C one( 1 );
C c;
}
最初の C クラスインスタンスは 1 を出力した。次の C クラスインスタンスは、-1 をデリゲイトコンストラクタを通して出力し、自ら 0 を出力している。
% c++ -std=c++11 delegate.cpp
% ./a.out
by int 1
by int -1
by default 0
最近のコメント