ref class 및 ref struct(C++/CLI 및 C++/CX)

ref class 또는 ref struct 확장은 ‘개체 수명’이 자동 관리되는 클래스나 구조체를 선언합니다. 개체에 더 이상 액세스할 수 없거나 개체가 범위를 벗어나면 메모리가 해제됩니다.

모든 런타임

구문

class_access ref class name modifier : inherit_access base_type {};
class_access ref struct name modifier : inherit_access base_type {};
class_access value class name modifier : inherit_access base_type {};
class_access value struct name modifier : inherit_access base_type {};

매개 변수

class_access
(선택 사항) 어셈블리 외부 클래스 또는 구조체의 접근성입니다. 가능한 값은 public 기본 privateprivate 값입니다. 중첩 클래스 또는 구조체에는 class_access 지정자를 사용할 수 없습니다.

이름
클래스 또는 구조체의 이름입니다.

modifier
(선택 사항) 유효한 한정자는 abstractsealed입니다.

inherit_access
(선택 사항) base_type의 접근성입니다. 유일하게 허용되는 접근성은 public (public 기본값)입니다.

base_type
(선택 사항) 기본 형식입니다. 그러나 값 형식은 기본 형식으로 작동할 수 없습니다.

자세한 내용은 Windows 런타임 및 공용 언어 런타임 섹션에서 이 매개 변수에 대한 언어별 설명을 참조하세요.

설명

ref 클래스 또는 값 클래스로 선언된 개체의 기본 멤버 접근성은 private. 또한 ref 구조체 또는 값 구조체로 선언된 개체의 기본 멤버 접근성은 다음과 입니다public.

참조 형식이 다른 참조 형식에서 상속받는 경우 기본 클래스의 가상 함수는 override를 사용하여 명시적으로 재정의하거나 new(vtable의 새 슬롯)를 사용하여 숨겨야 합니다. 파생 클래스 함수도 명시적으로 로 표시 virtual되어야 합니다.

컴파일 시간에 형식이 ref class, ref struct, value class, value struct인지 여부를 검색하려면 __is_ref_class (type), __is_value_class (type) 또는 __is_simple_value_class (type)를 사용합니다. 자세한 내용은 형식 특성에 대한 컴파일러 지원을 참조하세요.

클래스 및 구조체에 대한 자세한 내용은 다음을 참조하세요.

Windows 런타임

설명

Ref 클래스 및 구조체값 클래스 및 구조체를 참조하세요.

매개 변수

base_type
(선택 사항) 기본 형식입니다. ref class 또는 ref struct는 0개 이상의 인터페이스와 0개 또는 한 개의 ref 형식에서 상속받을 수 있습니다. value class 또는 value struct는 0개 이상의 인터페이스에서만 상속받을 수 있습니다.

ref class 또는 ref struct 키워드를 사용하여 개체를 선언하면 개체 핸들, 즉 개체에 대한 참조 카운터 포인터가 이 개체에 액세스합니다. 선언된 변수가 범위를 벗어나면 컴파일러가 자동으로 내부 개체를 삭제합니다. 개체가 호출에서 매개 변수로 사용되거나 변수에 저장되면 개체 핸들이 실제로 전달되거나 저장됩니다.

value class 또는 value struct 키워드를 사용하여 개체를 선언하면 선언된 개체의 개체 수명이 감독되지 않습니다. 개체는 다른 표준 C++ 클래스 또는 구조체와 같습니다.

요구 사항

컴파일러 옵션: /ZW

공용 언어 런타임

설명

다음 표에는 C++/CLI와 관련된, 모든 런타임 섹션에 표시된 구문과의 차이점이 나와 있습니다.

매개 변수

base_type
(선택 사항) 기본 형식입니다. ref class 또는 ref struct는 0개 이상의 관리형 인터페이스와 0개 또는 한 개의 ref 형식에서 상속받을 수 있습니다. value class 또는 value struct는 0개 이상의 관리형 인터페이스에서만 상속받을 수 있습니다.

ref classref struct 키워드는 클래스 또는 구조체를 힙에 할당하도록 컴파일러에 지시합니다. 개체가 호출에서 매개 변수로 사용되거나 변수에 저장되면 개체 참조가 실제로 전달되거나 저장됩니다.

value classvalue struct 키워드는 할당된 클래스 또는 구조체의 값을 함수에 전달하거나 멤버에 저장하도록 컴파일러에 지시합니다.

요구 사항

컴파일러 옵션: /clr

참고 항목

.NET 및 UWP용 구성 요소 확장