문제

방금이 코드를 발견했으며 몇 가지 Google 검색으로 인해이 신비한 (나에게) 구문에 대한 설명이 없습니다.

Hashtable^ tempHash = gcnew Hashtable(iterators_);

IDictionaryEnumerator^ enumerator = tempHash->GetEnumerator();

가구가 무엇을 의미합니까? (그만큼 gcnew 나에게도 새롭고 나는 그것에 대해 물었다 여기.)

도움이 되었습니까?

해결책

이것은 C ++/CLI 그리고 간병은 C ++/CLI 용어에서 A * (포인터)와 동등한 관리자입니다. '핸들' '참조 유형'으로 (여전히 관리되지 않는 포인터를 가질 수 있기 때문에).

(더 나은 용어를 지적 해 준 Aardvark에게 감사합니다.)

다른 팁

// here normal pointer
P* ptr = new P; // usual pointer allocated on heap
P& nat = *ptr; // object on heap bind to native object

//.. here CLI managed 
MO^ mngd = gcnew MO; // allocate on CLI heap
MO% rr = *mngd; // object on CLI heap reference to gc-lvalue

일반적으로 구두점 % 그렇습니다 ^ punctuator로 & 그렇습니다 *. C ++에서 단영 & 연산자는 C ++/CLI에 있습니다 % 운영자.

하는 동안 &ptr 수율 a P*, %mngd 수율 MO^.

이것은 이것이 관리되는 객체 대 일반적인 C ++ 포인터에 대한 참조임을 의미합니다. 이러한 참조 뒤에있는 객체는 런타임에 의해 관리되며 메모리에서 재배치 할 수 있습니다. 또한 가비지로 자동으로 수집됩니다.

관리 메모리를 할당하면 쓰레기 수집가가 메모리를 움직일 수 있습니다. ^ 연산자는 관리되는 메모리의 포인터이며, 계속해서 옳은 쓰레기 수집가가 가리키는 물체를 움직이더라도 배치하십시오.

MSDN에서 CARET은 생성되는 유형에 대한 핸들을 얻는 것을 의미하는 것처럼 보입니다.

https://web.archive.org/web/20150117095313/http://msdn.microsoft.com/en-us/library/te3ecsc8%28vs.80%29.aspx

C ++/CLI에서는 관리 포인터를 의미합니다. 그것 (및 기타 C ++/CLI 기능)에 대한 자세한 내용은 다음과 같습니다.

http://en.wikipedia.org/wiki/c%2B%2B/cli

그것은 그것이 관리되는 객체에 대한 참조임을 의미합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top