Cat* myCat = new Cat(); // 1
Это значение по умолчанию создает динамически распределенное Cat
и помещает результирующий указатель на этот Cat
в указатель, называемый myCat
.
Cat yourCat = new Cat(); // 2
Это значение по умолчанию -строит динамически распределенное Cat
, затем создает автоматически c -хранилище (или stati c -хранилище, если оно глобальное) Cat
с именем yourCat
из полученного указателя.
Является ли это допустимым, зависит от определения Cat
.
Если у него есть конструктор, который принимает Cat*
, то этот указатель передается в качестве аргумента конструктору, и мы не можем сказать из количество кода с учетом того, что он делает с этим указателем, или динамически выделенное значение Cat
равно delete
d или утечка.
Если нет, строка не будет компилироваться.
Обратите внимание, что наличие такого конструктора было бы не-идиоматическим c и весьма необычным, поэтому у вашего класса , вероятно, такого нет.
Если конструктор по умолчанию для Cat
удален, тогда n любая строка будет компилироваться!