1
我的類有函數指針公共實例成員變量。(_ base_func_ptr) 我是否必須在構造函數中初始化'_base_func_ptr'? 或只是跳過初始化?C + +我必須在構造函數中初始化公共實例成員變量?
class base_cls {
public:
#ifdef WHICH_ONE_IS_CORRECT
base_cls():_base_func_ptr(nullptr), _some1(0), _some2(0) {}
#else ifdef INITIALIZE_ORDER_IS_REVERSE
base_cls():_some1(0), _some2(0), _base_func_ptr(nullptr) {}
#else ifdef JUST_SKIP_INITIALIZE_PUBLIC_MEMBER
base_cls():_some1(0), _some2(0){}
#endif
void (*_base_func_ptr)(void);
private:
int _some1;
int _some2;
};
Fyi,成員初始化的順序是* always *包含類中的聲明順序。您在成員init列表中提供的順序沒有區別。關於*不*初始化你的成員func-ptr,你能想到一個原因*不是*有沒有真正的好處,只是讓它懸在一個不確定的價值上? – WhozCraig