이 작동합니다C++ 포인터와 객체 인스턴스화
MyObject *o;
o = new MyObject();
그리고이되지 않습니다
MyObject o = new MyObject();
왜?
이 작동합니다C++ 포인터와 객체 인스턴스화
MyObject *o;
o = new MyObject();
그리고이되지 않습니다
MyObject o = new MyObject();
왜?
키워드 new
returns a pointer. 객체의 포인터에 할당되어야합니다.
이것은 또한 작동합니다 : EDIT
를MyObject o = MyObject();
:
세스 주석으로, 위가하는 것과 같습니다
MyObject o;
기본 생성자 (즉, 매개 변수없이)이 경우라고 생성자가 주어지지 않는다.
또는 'MyObject o;' –
본 적이 있습니다! 저는 Java를 배우고 C++를 배웠습니다. 그래서 객체를 인스턴스화하기 위해'new'가 필요하다는 인상하에있었습니다. – Peter
견적 요다 : "배운 것을 잊어 버려야합니다." ;) –
등가물이 아니기 때문에 시도 :
MyObject* o = new MyObject();
new MyObject()
은 MyObject
유형의 개체에 대한 포인터를 반환합니다. 그래서 실제로는 객체 MyObject*
을 할당하려고합니다 (예, 포인터는 객체로 간주 될 수도 있음). 따라서 변수를 MyObject*
또는 호환 가능한 것으로 선언해야합니다 (예 : std::shared_ptr<MyObject>
). 과제
MyObject* o = new MyObject();
뿐만 아니라 유효하지만
적절한 초기화는
// in C++03
MyObject* o(new MyObject());
// in C++11
MyObject* o {new MyObject()};
이다.
왜 포인터가 필요합니까? – ipc
그게 내가 이해하려고하는 것입니다. @MPelletier가 나에게 설명해 준 것 같다. – Peter