2014-11-12 5 views
0

나는이 질문을 편집하여 자신을 분명히했습니다. 내 질문은.문자열과 문자열의 차이 ^?

우리가

문자열을 정의하면 우리는 [],

같은 문자를 정의 할 수 있지만,

우리가 문자열을 정의하면^

A [] 정의 할 수 캔트.

그렇다면 둘 다 문자열 인 경우 []가 정의되지 않은 이유는 무엇입니까?

+0

오브젝트 운영자에게 처리됩니다. 그것은'gcnew'로 만들어야합니다. – Andro

+2

[C++/CLI에서 캐럿 ('^')의 의미는 무엇입니까?] (http://stackoverflow.com/questions/202463/what-does-the-caret-mean-in-c-cli) –

+1

표준 : : 대문자로 된 철자가 없습니다. System :: String은 .NET 문자열 유형입니다. 가비지 수집 객체이기 때문에^hat가 있습니다. –

답변

0

String ^은 기본 문자열에 대한 핸들입니다. 이들은 가비지 컬렉터에 제공하는 도움을 제외하면 C++의 포인터/참조와 매우 유사합니다. 즉, C++의 포인터처럼 메모리를 삭제할 필요가 없습니다.

0

Microsoft의 Managed C++는 일반적인 C++에서 익숙한 표준 정의와 근본적으로 다릅니다. 가장 큰 차이점 중 하나는 관리 포인터을 사용하여 메모리 할당/해제를 처리하는 방식입니다. 참조하고있는 ^해트 연산자이라고하며 실행시 자동으로 메모리 상태가 인 포인터를 나타내는 데 사용됩니다. 즉, 이전에 할당 된 메모리를 해제하려면 delete을 사용할 필요가 없습니다.

모자 연산자의 유용성/효율성은 논쟁의 여지가 있지만 Visual C++ .NET의 경우 메모리를 관리하는 표준 방법으로 남아 있습니다.

관련 문제