Eventuali duplicati:
How much work should be done in a constructor?Un costruttore C++ dovrebbe davvero funzionare?
sto strugging con qualche consiglio che ho in parte posteriore della mia mente, ma per il quale non riesco a ricordare il ragionamento.
Mi sembra di ricordare a un certo punto di leggere qualche consiglio (non ricordo la fonte) che i costruttori del C++ non dovrebbero fare il vero lavoro. Piuttosto, dovrebbero inizializzare solo le variabili. Il consiglio proseguì spiegando che il lavoro reale doveva essere fatto in una sorta di metodo init(), da chiamare separatamente dopo la creazione dell'istanza.
La situazione è che ho una classe che rappresenta un dispositivo hardware. È logico per me che il costruttore chiami le routine che interrogano il dispositivo per creare le variabili di istanza che descrivono il dispositivo. In altre parole, una volta che la nuova istanza l'oggetto, lo sviluppatore riceve un oggetto che è pronto per essere utilizzato, nessuna chiamata separata a object-> init() richiesta.
C'è una buona ragione per cui i costruttori non dovrebbero fare un vero lavoro? Ovviamente potrebbe rallentare il tempo di allocazione, ma non sarebbe diverso se si inviti un metodo separato subito dopo l'allocazione.
Solo cercando di capire quali trucchi non ho attualmente in considerazione che potrebbero aver portato a tale consiglio.
Possibile candidato per la fusione. – dmckee