Ничего не возвращается конструктору. Синтаксис A()
не является вызовом конструктора, он создает временный объект типа A
(и вызывает конструктор в процессе).
Вы не можете вызвать конструктор напрямую, конструкторы вызываются как часть конструкции объекта.
В вашем коде при создании временного конструктора вызывается конструктор по умолчанию (тот, который вы определили). Затем во время построения a
конструктор копирования (автоматически генерируемый компилятором) вызывается с временным параметром в качестве аргумента.
Как правильно указывает Грег, в некоторых обстоятельствах (включая этот) компилятору разрешено избегать конструирования копирования и конструирования по умолчанию a
(однако конструктор копирования должен быть доступен). Я не знаю ни одного компилятора, который бы не выполнял такую оптимизацию.