C ++オブジェクトコンストラクターの完全な初期化リストを明示的に持つことの長所または短所はありますか?(デフォルトのコンストラクターを使用している場合でも、すべてのメンバーがリストされているように完全ですか?)
たとえば、オブジェクトがある場合:
class MyObject
{
public:
MyObject();
private:
double _doub;
Foo _foo;
std::set<int> _intSet;
int _int;
Bar _bar;
}
コンストラクターを次のようにすることとの違いはありますか?
MyObject::MyObject():
_doub(1.4), _foo("me"), _intSet(),
_int(5), _bar() {};
特にデータを設定する必要がある(またはデフォルト以外のコンストラクターを呼び出す)必要があるオブジェクトのみをリストするのではなく、次のようになります。
MyObject::MyObject():
_doub(1.4), _foo("me"), _int(5) {};
クラスにデフォルトのコンストラクターを使用するオブジェクトしかない場合、初期化リストを設定する必要がありますか?
例えば:
class MyObject
{
public:
MyObject();
private:
Foo _foo;
std::set<int> _intSet;
Bar _bar;
}
このようにコンストラクターを持つ意味はありますか?
MyObject::MyObject():
_foo(), _intSet(), _bar() {};
ありがとう。