No se devuelve nada del constructor. La sintaxis A()
no es una llamada de constructor, sino que crea un objeto temporal de tipo A
(y llama al constructor en el proceso).
No se puede llamar a un constructor directamente, los constructores se llaman como parte de la construcción del objeto.
En su código, durante la construcción del temporal se llama al constructor predeterminado (el que usted definió). Luego, durante la construcción de a
, el constructor de copia (generado automáticamente por el compilador) se llama con el temporal como argumento.
Como señala correctamente Greg, en algunas circunstancias (incluida esta), el compilador puede evitar la construcción de copias y la construcción predeterminada a
(sin embargo, se debe poder acceder al constructor de copias). No conozco ningún compilador que no realice dicha optimización.
'a' se está construyendo mediante el constructor de copias. Se está haciendo una copia del objeto temporal 'A()'. – GManNickG