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

ref class 또는 ref struct 확장은 ‘개체 수명’이 자동 관리되는 클래스나 구조체를 선언합니다.The ref class or ref struct extensions declare a class or struct whose object lifetime is administered automatically. 개체에 더 이상 액세스할 수 없거나 개체가 범위를 벗어나면 메모리가 해제됩니다.When the object is no longer accessible or goes out of scope, the memory is released.

모든 런타임All Runtimes

구문Syntax

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 {};

매개 변수Parameters

class_accessclass_access
(선택 사항) 어셈블리 외부 클래스 또는 구조체의 접근성입니다.(Optional) The accessibility of the class or struct outside the assembly. 가능한 값은 publicprivate ( private 기본값)입니다.Possible values are public and private (private is the default). 중첩 클래스 또는 구조체에는 class_access 지정자를 사용할 수 없습니다.Nested classes or structs cannot have a class_access specifier.

namename
클래스 또는 구조체의 이름입니다.The name of the class or struct.

modifiermodifier
(선택 사항) 유효한 한정자는 abstractsealed입니다.(Optional) abstract and sealed are valid modifiers.

inherit_accessinherit_access
(선택 사항) base_type 의 접근성입니다.(Optional) The accessibility of base_type. 유일 하 게 허용 되는 액세스 가능성은 이며 기본값은입니다 public public .The only permitted accessibility is public (public is the default).

base_typebase_type
(선택 사항) 기본 형식입니다.(Optional) A base type. 그러나 값 형식은 기본 형식으로 작동할 수 없습니다.However, a value type cannot act as a base type.

자세한 내용은 Windows 런타임 및 공용 언어 런타임 섹션에서 이 매개 변수에 대한 언어별 설명을 참조하세요.For more information, see the language-specific descriptions of this parameter in the Windows Runtime and Common Language Runtime sections.

설명Remarks

Ref 클래스 또는 값 클래스 를 사용 하 여 선언 된 개체의 기본 멤버 액세스 가능성은 private 입니다.The default member accessibility of an object declared with ref class or value class is private. Ref struct 또는 value struct 를 사용 하 여 선언 된 개체의 기본 멤버 액세스 가능성은 public 입니다.And the default member accessibility of an object declared with ref struct or value struct is public.

참조 형식이 다른 참조 형식에서 상속받는 경우 기본 클래스의 가상 함수는 override를 사용하여 명시적으로 재정의하거나 new(vtable의 새 슬롯)를 사용하여 숨겨야 합니다.When a reference type inherits from another reference type, virtual functions in the base class must explicitly be overridden (with override) or hidden (with new (new slot in vtable)). 파생 클래스 함수도 명시적으로로 표시 되어야 합니다 virtual .The derived class functions must also be explicitly marked as virtual.

컴파일 시간에 형식이 ref class, ref struct, value class, value struct 인지 여부를 검색하려면 __is_ref_class (type), __is_value_class (type) 또는 __is_simple_value_class (type)를 사용합니다.To detect at compile time whether a type is a ref class or ref struct, or a value class or value struct, use __is_ref_class (type), __is_value_class (type), or __is_simple_value_class (type). 자세한 내용은 형식 특성에 대한 컴파일러 지원을 참조하세요.For more information, see Compiler Support for Type Traits.

클래스 및 구조체에 대한 자세한 내용은 다음을 참조하세요.For more information on classes and structs, see

Windows 런타임Windows Runtime

설명Remarks

Ref 클래스 및 구조체값 클래스 및 구조체를 참조하세요.See Ref classes and structs and Value classes and structs.

매개 변수Parameters

base_typebase_type
(선택 사항) 기본 형식입니다.(Optional) A base type. ref class 또는 ref struct 는 0개 이상의 인터페이스와 0개 또는 한 개의 ref 형식에서 상속받을 수 있습니다.A ref class or ref struct can inherit from zero or more interfaces and zero or one ref types. value class 또는 value struct 는 0개 이상의 인터페이스에서만 상속받을 수 있습니다.A value class or value struct can only inherit from zero or more interfaces.

ref class 또는 ref struct 키워드를 사용하여 개체를 선언하면 개체 핸들, 즉 개체에 대한 참조 카운터 포인터가 이 개체에 액세스합니다.When you declare an object by using the ref class or ref struct keywords, the object is accessed by a handle to an object; that is, a reference-counter pointer to the object. 선언된 변수가 범위를 벗어나면 컴파일러가 자동으로 내부 개체를 삭제합니다.When the declared variable goes out of scope, the compiler automatically deletes the underlying object. 개체가 호출에서 매개 변수로 사용되거나 변수에 저장되면 개체 핸들이 실제로 전달되거나 저장됩니다.When the object is used as a parameter in a call or is stored in a variable, a handle to the object is actually passed or stored.

value class 또는 value struct 키워드를 사용하여 개체를 선언하면 선언된 개체의 개체 수명이 감독되지 않습니다.When you declare an object by using the value class or value struct keywords, the object lifetime of the declared object is not supervised. 개체는 다른 표준 C++ 클래스 또는 구조체와 같습니다.The object is like any other standard C++ class or struct.

요구 사항Requirements

컴파일러 옵션: /ZWCompiler option: /ZW

공용 언어 런타임Common Language Runtime

설명Remarks

다음 표에는 C++/CLI와 관련된, 모든 런타임 섹션에 표시된 구문과의 차이점이 나와 있습니다.The following table lists differences from the syntax shown in the All Runtimes section that are specific to C++/CLI.

매개 변수Parameters

base_typebase_type
(선택 사항) 기본 형식입니다.(Optional) A base type. ref class 또는 ref struct 는 0개 이상의 관리형 인터페이스와 0개 또는 한 개의 ref 형식에서 상속받을 수 있습니다.A ref class or ref struct can inherit from zero or more managed interfaces and zero or one ref types. value class 또는 value struct 는 0개 이상의 관리형 인터페이스에서만 상속받을 수 있습니다.A value class or value struct can only inherit from zero or more managed interfaces.

ref classref struct 키워드는 클래스 또는 구조체를 힙에 할당하도록 컴파일러에 지시합니다.The ref class and ref struct keywords tell the compiler that the class or structure is to be allocated on the heap. 개체가 호출에서 매개 변수로 사용되거나 변수에 저장되면 개체 참조가 실제로 전달되거나 저장됩니다.When the object is used as a parameter in a call or is stored in a variable, a reference to the object is actually passed or stored.

value classvalue struct 키워드는 할당된 클래스 또는 구조체의 값을 함수에 전달하거나 멤버에 저장하도록 컴파일러에 지시합니다.The value class and value struct keywords tells the compiler that the value of the allocated class or structure is passed to functions or stored in members.

요구 사항Requirements

컴파일러 옵션: /clrCompiler option: /clr

참고 항목See also

.NET 및 UWP 용 구성 요소 확장Component Extensions for .NET and UWP