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, 멤버 초기화 순서는 항상 포함하는 클래스의 선언 순서입니다. 멤버 초기화 목록에 입력 한 순서는 아무런 차이가 없습니다. 멤버 func-ptr을 초기화하지 않는 것에 대해, * 아닌 * 이유를 생각해 볼 수 있습니까? 불확실한 가치로 매달려 버리는 것만으로도 정말 거꾸로 있습니까? – WhozCraig