2011-12-17 3 views
3

가능한 중복은 : ^개체 정의에 무엇입니까?


What does the caret mean in C++/CLI?
In C++/CLR, what does a hat character^do?

나는 비주얼 스튜디오 C++에서 첫 승리 양식 응용 프로그램을 작성하고, 코드를 검색하는 것은 내가 이해할 수없는 것을 보았다

private: System::Windows::Forms::Button^ button1; 

의 의미는 무엇입니까? 이 줄에표지판이 있습니까? 나는 *&을 이해하지만 결코 객체의 정의에 ^을 보지 못했습니다.

+0

모자 포인터입니다. 이 부분을보십시오 : http://stackoverflow.com/q/500580 – Lumi

+1

이것은 Windows Forms 응용 프로그램이 C++ 프로그램이 아니라 C++/CLI (C++ for .NET, 원한다면) 프로그램입니다. 2 개의 다른 언어 (꽤 관련이 있지만). 이 사실을 알고 있고 실제로 C++/CLI를 사용하고 싶다면 C++/CLI에 대한 좋은 튜토리얼/책을 구하십시오.'^ '것은 필수 개념입니다. 그렇지 않다면 C++ 용으로 다른 GUI 라이브러리를 사용하십시오. –

+1

http://img43.imageshack.us/img43/7285/cface.png –

답변

4

Have a look here이 그냥 C하지 ++ 있지만 C++/CLI로, 포인터의 유일한 유형 ++ 포인터 정상적인 C는, 및 .NET 참조 형식은 "처리"를 통해 액세스되는 C++/CLI에서

새로운 구문 ClassName^대신 ClassName *. 이 새로운 구조는 관리되는 C++ 코드와 표준 C++ 코드가 섞여있을 때 특히 유용합니다. .NET 자동 가비지 수집 아래에있는 객체와 프로그래머가 명시 적으로 삭제해야하는 객체를 명확히합니다.

+0

+1 OP가 C++과 C++/CLI의 차이점을 인식하지 못하는 가능성을 고려한 유일한 대답입니다. –

0

^그것이 CLR 타입이 아닌 C++ 자료형

2

그것은 가비지 수집 포인터를 지정하는 것을 의미한다. 일반적인 C++ 버전은 포인터의 경우 *이고 C++/CLI는 ^을 사용하여 관리되는 것과 관리되지 않는 것을 구별합니다. 또한 다른 키워드를 사용하여 메모리를 할당합니다.

int* plain_cpp = new int; 
delete plain_cpp; // unmanaged 

int^ cpp_cli = gcnew int; 
// managed, no delete possible 
1

C++/CLI의 포인터 (*)와 같습니다. 한 가지 중요한 차이점은 C + +/CLI가 관리되기 때문에 가비지 수집된다는 것입니다.

관련 문제