Cita: Es decir que en c se tenían que llamar y en c++ lo hace automático el compilador. Así que no hay contradicción :D
En C no existe los constructores. Pero nada impide que uses una función de toda la vida que te "construya" el objeto.
En C++ no necesitan llamar por que cuando creas el objeto ya lo haces a la hora de crearlo. Si no lo haces o lo haces mal, no se crea. XD
Y preste mucha atención a el tema que comenta dmorill sobre el tema de los
inline. Cuando declaras y defines todo dentro de una clase/estructura haces que la función sea una
función inline.
¿Que es eso de las funciones inline?
Cuando creas una función
no inline, esa se encuentra en una parte de la memoria. Cuando haces la llamada en una determinada linea
dentro de main, esta detiene el programa en esta misma linea, se desviá hacia donde esta la función, y la ejecuta, acto seguido vuelve a donde se paro. Eso se traduce en saltos y perdida de tiempo, pero a cambio te queda el programa(ejecutable) más corto, ya que a cada llamada solo tienes una función y tendrás que estar saltando hacia ella en cada llamada.
Mas las funciones inline no son una sola, si no que cada vez que la llames ella, se escribe por completo donde la llamas(se hace copias). Si llamas a una función inline estas escribiendo ella justo en ese punto, lo que resumidamente estas evitando los saltos a cambio de un programa más
grande.
No se recomienda hacer grandes funciones inline, pero ten presente que si necesitas rendimiento, quizás te interese hacerlas inline a costa de un tamaño más grande del ejecutable.
Pruebe hacer una clase con funciones inline, haga unas cuantas llamadas a esa función, verás como la que es inline te sale el ejecutable más inflado que la que
no es inline.
Mire los vídeos. XD