Потому что вы только что объявили функцию mClass2 нулевых аргументов, которая возвращает a CMyClass. Это допустимый вариант, поскольку может быть, скажем, экземпляр static CMyClass, к которому эта функция имеет доступ. Обратите внимание, что CMyClass все еще имеет открытый конструктор копии.
(Чтобы убедить себя, скомпилируйте этот модуль для ассемблера и обратите внимание, что комментирование строки CMyClass mClass2(); приводит к тому же выводу.)
Ответ 2
Потому что он объявляет функцию и не вызывает конструктор, как вы думаете.