C + +我必须在构造函数中初始化公共实例成员变量?
问题描述:
我的类有函数指针公共实例成员变量。(_ 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