2011-04-19 4 views
6

Embarcadero RAD Studio에서 C++ 코드를 디버깅하는 중 발견되었습니다. 그것은 컴파일하는 것처럼 보이지만, 솔직히 말해서 그것이 의미하는 바가 분명해 보이지만 실제로 무엇을하는지 파악할 수는 없습니다.이 신비한 코드를 설명 할 수 있습니까?

TObject *objPtr (new TObject()); 

누구나 정상적인 설명을 제공 할 수 있다면 감사 할 것입니다.

+3

C++에서는 개체 생성자와 비슷한 구문으로 기본 제공 형식 (정수 또는 포인터 등)을 초기화 할 수 있습니다. 이 생성자와 같은 구문을 유형 변환 연산으로 사용할 수도 있습니다 (예 : 'int foo = some_function (int (bar))'. –

+0

생성자 (ctors)를 읽어야합니다. C++과 같은 구문을 사용합니다.이 구문은 C와 유사한 구문을 사용하는 대신 Ctor의 호출 방식을 반영합니다. 보통 포인터가 아니라 스택에 생성 된 클래스 인스턴스를 볼 수 있습니다. 그래도 좋은 질문입니다. +1. – 0xC0000022L

+0

모든 답변이 정확하고 이러한 답변 중 하나가 나오기 전에 그러한 대답을 한 것으로 생각했지만 읽은 질문은 ** 왜 ** TObject (및 일부 자손이 아닌)를 초기화하는 것입니까? 예 : 그 대답은 뭐라고하는지 분명하지만 ** 실제 목표는 무엇입니까 **? – RichardTheKiwi

답변

1

이렇게하면 힙에 TObject 유형의 객체가 만들어지고 그 위치가 objPtr이라는 TObject 포인터에 저장됩니다. 메모리 누수를 방지하려면 어느 시점에서 라인 삭제 objPtr을 통해 삭제되어야합니다.

4

직접 초기화 구문을 사용하여 새로 할당 된 Tobject에 objPtr을 초기화합니다. 가장 실용적인 목적은 Tobject *objPtr = new Tobject();과 같습니다.

관련 문제