Поскольку я пришел с C# на C++, все выглядит сумасшедшим для меня в C++. Я просто интересно, если кто-то может объяснить мне, почему у нас такого рода инстанцировании в C++: метод 1:другой тип экземпляра на C++
ClassA obj1; // this is going to stack
метод 2:
ClassA *obj1 = new ClassA(); //this is going to heap
, тогда как мы не имеем общего инстанцировании в C#, как на C++:
ClassA obj2 = new obj2();
и еще один вопрос в method1 я получаю экземпляр из ClassA, но без(), и это Точное место, я смутился, почему мы должны подойти так? наш ClassA имеет конструктор, но экземпляр без круглых скобок ??? Как мы называем его конструктором?
p.s: Я читал эти темы:
Different methods for instantiating an object in C++
Stack, Static, and Heap in C++
What and where are the stack and heap?
У C# нет двух способов создания экземпляров, поскольку среда выполнения управляет памятью для вас. –
В методе 1 obj является ссылкой на объект ClassA. В методе 2 obj является указателем на объект ClassA. new в C++ возвращает указатель на выделенную память. Вы должны указать новый тип создаваемого объекта. Отчасти поэтому третий вариант не работает. obj2 не был определен как объект. В этот момент кода это просто текст, который будет использоваться в качестве идентификатора для ссылки на объект после его создания. – iheanyi