1
私のクラスは関数ポインタpublicインスタンスメンバ変数を持っています(_ base_func_ptr) コンストラクタで '_base_func_ptr'を初期化する必要がありますか? をスキップするか、初期化をスキップするだけですか?C++コンストラクタでpublicインスタンスメンバー変数を初期化する必要がありますか?
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の場合、メンバーの初期化の順序は、常に*含まれているクラス内の宣言の順序です。member-initリストに指定した順序は違いはありません。あなたのメンバーfunc-ptrを初期化していない*について*あなたは理由*を*と考えることができますか?それは不確定な値でぶら下がっているだけのために、本当に*上にあるのでしょうか? – WhozCraig