Duplicar posibles:
How much work should be done in a constructor?¿Debería un constructor C++ hacer un trabajo real?
estoy strugging con algunos consejos que tengo en el fondo de mi mente, pero para los que no puedo recordar el razonamiento.
Creo recordar en algún momento que leí algunos consejos (no recuerdo la fuente) de que los constructores de C++ no deberían hacer un trabajo real. Por el contrario, deberían inicializar solo las variables. El consejo continuó explicando que el trabajo real debería hacerse en algún tipo de método init(), que se llamará por separado después de que se haya creado la instancia.
La situación es que tengo una clase que representa un dispositivo de hardware. Tiene sentido lógico para mí que el constructor llame a las rutinas que consultan el dispositivo para construir las variables de instancia que describen el dispositivo. En otras palabras, una vez que la instancia nueva crea el objeto, el desarrollador recibe un objeto que está listo para ser utilizado, no se requiere una llamada por separado a object-> init().
¿Hay alguna buena razón por la cual los constructores no deberían hacer un trabajo real? Obviamente, podría retrasar el tiempo de asignación, pero eso no sería diferente si llama a un método por separado inmediatamente después de la asignación.
Estoy tratando de descubrir qué problemas que actualmente no considero que podrían haber llevado a tal consejo.
Posible candidato para la fusión. – dmckee