Sono confuso su quali potrebbero essere i problemi se un costruttore fosse ereditato da una classe base. Cpp Primer Plus dice:
I costruttori sono diversi dagli altri metodi di classe in quanto creano nuovi oggetti, mentre altri metodi sono invocati da oggetti esistenti . Questo è uno dei motivi per cui i costruttori non sono ereditati . Eredità significa che un oggetto derivato può usare un metodo di classe base, ma, nel caso dei costruttori, l'oggetto non esiste fino a quando il costruttore non ha fatto il suo lavoro.
Comprendo che il costruttore viene chiamato prima che la costruzione dell'oggetto sia completata.
Come può causare problemi se una classe figlio eredita ( ereditando intendo che la classe figlio è in grado di sovrascrivere il metodo della classe genitore ecc. Non solo accedendo al metodo della classe genitore ) il costruttore principale?
Capisco che non è necessario chiamare esplicitamente un costruttore all'interno di un codice [non di cui sono ancora a conoscenza.] Se non durante la creazione di oggetti. Anche allora puoi farlo usando un meccanismo per invocare il costitutivo genitore [In cpp, usando ::
o usando member initialiser list
, In java usando super
]. In Java esiste un'applicazione per chiamarlo nella prima riga, capisco che è per garantire che l'oggetto genitore sia creato per primo e poi la costruzione dell'oggetto figlio proceda.
Può ignorarlo . Ma non riesco a trovare situazioni in cui ciò possa rappresentare un problema. Se il figlio eredita il costruttore principale, cosa può andare storto?
Quindi è solo per evitare di ereditare funzioni non necessarie. O c'è di più?