C ++/CLI에서 간병 ( '^')은 무엇을 의미합니까?
문제
방금이 코드를 발견했으며 몇 가지 Google 검색으로 인해이 신비한 (나에게) 구문에 대한 설명이 없습니다.
Hashtable^ tempHash = gcnew Hashtable(iterators_);
IDictionaryEnumerator^ enumerator = tempHash->GetEnumerator();
가구가 무엇을 의미합니까? (그만큼 gcnew
나에게도 새롭고 나는 그것에 대해 물었다 여기.)
다른 팁
// 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은 생성되는 유형에 대한 핸들을 얻는 것을 의미하는 것처럼 보입니다.
C ++/CLI에서는 관리 포인터를 의미합니다. 그것 (및 기타 C ++/CLI 기능)에 대한 자세한 내용은 다음과 같습니다.
그것은 그것이 관리되는 객체에 대한 참조임을 의미합니다.
제휴하지 않습니다 StackOverflow