C++ 是否必须在构造函数中初始化 public 实例成员变量?
C++ do I have to initialize public instance member variable in constructor?
我的class有函数指针public实例成员变量。(_base_func_ptr)
我必须在构造函数中初始化'_base_func_ptr'吗?
或者只是跳过初始化?
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;
};
您没有在构造函数中初始化它,但您必须在使用变量之前对其进行初始化。否则,您的程序将有未定义的行为。
我的class有函数指针public实例成员变量。(_base_func_ptr) 我必须在构造函数中初始化'_base_func_ptr'吗? 或者只是跳过初始化?
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;
};
您没有在构造函数中初始化它,但您必须在使用变量之前对其进行初始化。否则,您的程序将有未定义的行为。