對於C++對象構造函數,明確擁有一個FULL初始化列表有什麼優缺點嗎? (全在你把所有的成員列出,即使我們只是使用默認的構造函數?)在缺省構造函數中顯式設置初始化列表有沒有優缺點?
舉例來說,如果我有對象:
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) {};
如果該類只有它使用默認構造函數的對象,我是否應該設置一個初始化列表?
例如:
是否有一個點有一個構造函數呢?
MyObject::MyObject():
_foo(), _intSet(), _bar() {};
謝謝。
關於最後一部分:不是,它的功能與沒有它的功能相同,但是失去了「無用戶定義的構造函數」狀態。 – chris
當只有_value-initialization_時,它才重要 –
避免在標識符中使用前導'_',因爲任何後跟大寫的'_'標識符都是爲編譯器使用而保留的。如果您喜歡'_',請將其放在標識符的末尾。 – Yakk