다음을 통해 공유


sealed(C++ 구성 요소 확장)

sealed는 가상 멤버가 재정의할 수 없거나 형식이 기본 형식으로 사용될 수 없음을 나타내는 ref 클래스의 상황에 맞는 키워드입니다.

[!참고]

ISO C++11 표준 언어에는 Visual Studio에서 지원되는 final 키워드가 있습니다.표준 클래스에서 final을 사용하고 ref 클래스에서는 sealed를 사용합니다.

모든 런타임

구문

ref class identifier sealed {...};
virtual return-type identifier() sealed {...};

매개 변수

  • identifier
    함수 또는 클래스의 이름입니다.

  • return-type
    함수에서 반환하는 형식입니다.

설명

첫 번째 구문 예제에서 클래스가 봉인되어 있습니다.두 번째 예제에서는 가상 함수가 봉인되어 있습니다.

sealed 키워드는 네이티브 대상과 Windows 런타임 및 공용 언어 런타임(CLR)에도 유효합니다.자세한 내용은 지정자 재정의와 네이티브 컴파일을 참조하십시오.

__is_sealed (type) 형식 특성을 사용하여 형식이 봉인되어 있는지 여부를 컴파일 시간에 감지할 수 있습니다.자세한 내용은 형식 특성에 대한 컴파일러 지원(C++ 구성 요소 확장)을 참조하십시오.

sealed는 상황에 맞는 키워드입니다.자세한 내용은 상황에 맞는 키워드(C++ 구성 요소 확장)을 참조하십시오.

Windows 런타임

자세한 내용은 Ref 클래스 및 구조를 참조하십시오.

0w2w91tf.collapse_all(ko-kr,VS.110).gif요구 사항

컴파일러 옵션: /ZW

공용 언어 런타임

(공용 언어 런타임에만 적용되는 이 언어 기능에 대한 설명이 없습니다.)

0w2w91tf.collapse_all(ko-kr,VS.110).gif요구 사항

컴파일러 옵션: /clr

0w2w91tf.collapse_all(ko-kr,VS.110).gif예제

다음 코드 예제에서는 가상 컴퓨터에서 sealed의 효과를 보여 줍니다.

// sealed_keyword.cpp
// compile with: /clr
interface struct I1 {
   virtual void f();
   virtual void g();
};

ref class X : I1 {
public:
   virtual void f() {
      System::Console::WriteLine("X::f override of I1::f");
   }

   virtual void g() sealed {
      System::Console::WriteLine("X::f override of I1::g");
   }
};

ref class Y : public X {
public:
   virtual void f() override {
      System::Console::WriteLine("Y::f override of I1::f");
   }

   /*
   // the following override generates a compiler error
   virtual void g() override {
      System::Console::WriteLine("Y::g override of I1::g");
   }  
   */
};

int main() {
   I1 ^ MyI = gcnew X;
   MyI -> f();
   MyI -> g();

   I1 ^ MyI2 = gcnew Y;
   MyI2 -> f();
}

Output

  
  
  

다음 코드 예제에서는 클래스를 sealed로 표시하는 방법을 보여 줍니다.

// sealed_keyword_2.cpp
// compile with: /clr
interface struct I1 {
   virtual void f();
};

ref class X sealed : I1 {
public:
   virtual void f() override {}
};

ref class Y : public X {   // C3246 base class X is sealed
public:
   virtual void f() override {}
};

참고 항목

개념

런타임 플랫폼의 구성 요소 확장