Man m();
Это означает, что «где-то еще в программе я определю функцию с именем m
, которая не принимает аргументов и возвращает Man
». Да, даже если вы пишете это внутри другой функции.
Man m;
Это означает, что «m
является переменной типа Man
». Поскольку Man
является типом класса, будет вызван конструктор по умолчанию, и скобки не нужны.