ma classe a une variable de membre d'instance publique de pointeur de fonction. (_ Base_func_ptr) dois-je initialiser '_base_func_ptr' dans le constructeur? ou simplement ignorer l'initialisation?C++ Dois-je initialiser la variable membre de l'instance publique dans le constructeur?
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, l'ordre d'initialisation des membres est * toujours * l'ordre de déclaration dans la classe conteneur.La commande que vous fournissez dans la liste member-init ne fait aucune différence. En ce qui concerne * not * l'initialisation de votre membre func-ptr, pouvez-vous penser à une raison * non * pour? Y a-t-il * vraiment * un avantage à simplement le laisser se balancer avec une valeur indéterminée? – WhozCraig