클래스 및 구조체(C++ 구성 요소 확장)
개체 수명이 자동으로 관리되는 클래스 또는 구조체를 선언합니다. 개체에 더 이상 액세스할 수 없거나 범위를 벗어나면 Visual C++는 개체에 할당된 메모리를 자동으로 삭제합니다.
모든 런타임
구문
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 및 private이고 기본값은 private입니다. 중첩 클래스 또는 구조에는 class_access 지정자를 사용할 수 없습니다.name
클래스 또는 구조체의 이름입니다.inherit_access(선택적 요소)
base_type의 액세스 가능성. 유일하게 허용되는 액세스 가능성은 public입니다(public은 기본값).base_type(선택적 요소)
기본 형식입니다. 그러나 값 형식을 기본 형식으로 작동할 수 없습니다.자세한 내용은 Windows 런타임 및 공용 언어 런타임 섹션에서 이 매개 변수의 언어 관련 설명을 참조하십시오.
설명
ref class 또는 value class로 선언된 개체의 기본 멤버 액세스 가능성은 private입니다. ref struct 또는 value struct로 선언된 개체의 기본 멤버 액세스 가능성은 public입니다.
참조 형식이 다른 참조 형식에서 상속되면 기본 클래스의 가상 함수는 명시적으로 재정의되거나(override(C++ 구성 요소 확장) 사용) 숨겨집니다(new(vtable의 새 슬롯)(C++ 구성 요소 확장) 사용). 파생된 클래스 함수는 virtual로 명시적으로 표시해야 합니다.
형식이 ref class이나 ref struct 또는 value class이나 value struct인지 여부를 컴파일 시간에 감지하려면 __is_ref_class (type), __is_value_class (type) 또는 __is_simple_value_class (type)을 사용합니다. 자세한 내용은 형식 특성에 대한 컴파일러 지원(C++ 구성 요소 확장)을 참조하십시오.
클래스 및 구조체에 대한 자세한 내용은 다음을 참조하십시오.
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개 또는 1개의 참조 형식에서 상속할 수 있습니다. value class 또는 value struct는 0개 이상의 관리되는 인터페이스에서만 상속할 수 있습니다.ref class 및 ref struct 키워드는 컴파일러에게 클래스나 구조체가 힙에 할당될 것임을 알려줍니다. 개체가 호출에서 매개 변수로 사용되거나 변수에 저장되면 개체 참조가 실제로 전달되거나 저장됩니다.
value class 및 value struct 키워드는 컴파일러에게 할당된 클래스 또는 구조체의 값이 함수에 전달되거나 멤버에 저장됨을 알려줍니다.
요구 사항
컴파일러 옵션: /clr