C++でクラスを初期化する方法は少なくとも2つあります。
(1)初期化子リスト
struct C
{
int i;
C() : i(0) {}
};
(2)初期化方法
struct D
{
int i;
C() { init(); }
void init() {
i = 0;
}
};
クラスのオブジェクトを時々再初期化する必要があります。2番目の解決策では、単純にを呼び出すことができますobj.init()
。init()
最初の解決策では、初期化子リストの効果を本質的に複製する関数を追加するか、を使用する必要がありますobj = C()
。
ここでどのバリアントが優れているかについて、多かれ少なかれコンセンサスがありますか?初期化メソッドを使用することには不利な点がありますか( C ++ FAQに記載されているパフォーマンスの低下の可能性を除く)。