이후 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();
및 방법 항목에서 한 번 더 질문 I)는를 ClassA에서하지만 (없이 인스턴스를 얻고 이것은이다 내가 혼란스러워하는 정확한 장소, 왜 그렇게 instatiating해야합니까? 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 객체에 대한 포인터입니다. C++의 새로운 기능은 할당 된 메모리에 대한 포인터를 반환합니다. 생성해야 할 객체의 유형을 새로 말해야합니다. 이것이 세 번째 옵션이 작동하지 않는 이유 중 일부입니다. obj2가 객체로 정의되지 않았습니다. 코드의 그 시점에서, 그것은 일단 생성 된 객체에 대한 참조를위한 식별자로 사용될 텍스트 일뿐입니다. – iheanyi