다음을 통해 공유


명시적 재정의(C++ 구성 요소 확장)

이 항목에서는 기본 클래스 또는 인터페이스의 멤버를 명시적으로 재정의 하는 방법을 설명 합니다.메서드는 다른 이름을 가진 파생된 메서드를 재정의 하려면 명명 된 명시적 재정의 사용 해야 합니다.

모든 런타임

구문

overriding-function-declarator = type::function [,type::function] { overriding-function-definition }
overriding-function-declarator = function { overriding-function-definition }

매개 변수

  • 재정의 함수 자가
    재정의 함수의 반환 형식, 이름 및 인수 목록입니다.재정의 함수 재정의 함수는 같은 이름을 사용할 수 없는 참고.

  • type
    재정의 하는 함수를 포함 하는 기본 형식입니다.

  • 함수
    쉼표로 구분 된 목록 재정의 함수 이름 하나 이상입니다.

  • 재정의 함수 정의
    재정의 함수 정의 함수 본문 문입니다.

설명

메서드 시그니처를에 대 한 별칭을 만들려면 또는 서명이 같은 메서드 witht에 대 한 다른 구현을 제공할 수 명시적 사용을 재정의 합니다.

상속 된 형식 및 상속 된 형식 멤버의 동작을 수정 하는 방법에 대 한 자세한 내용은 참조 하십시오. Override 지정자(C++ 구성 요소 확장).

Windows 런타임

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

컴파일러 옵션:/ZW

공용 언어 런타임

설명

정보가 명시적 재정의에서 네이티브 코드 또는 컴파일된 코드에 대 한 /clr:oldSyntax를 참조 하십시오 명시적 재정의 (C++).

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

컴파일러 옵션:/clr

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

예제

다음 코드 간단 하 고 암시적 재정의 하 고 구현 된 멤버는 기본 인터페이스에 명시적으로 재정의 사용 하지 않는 보여 줍니다.

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

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

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

Output

  

예제

다음 코드 예제에서는 공용 시그니처가 명시적 재정의 구문을 사용 하 여 모든 인터페이스 멤버를 구현 하는 방법을 보여 줍니다.

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

interface struct I2 {
   virtual void f();
};

ref struct X : public I1, I2 {
   virtual void f() = I1::f, I2::f {
      System::Console::WriteLine("X::f override of I1::f and I2::f");
   }
};

int main() {
   I1 ^ MyI = gcnew X;
   I2 ^ MyI2 = gcnew X;
   MyI -> f();
   MyI2 -> f();
}

Output

  
  

예제

다음 코드 예제에서는 함수 재정의 구현 하 고이 함수는 다른 이름에 있을 수 있습니다 방법을 보여 줍니다.

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

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

int main() {
   I1 ^ a = gcnew X;
   a->f();
}

Output

  

예제

다음 코드 예제에서는 형식 안전 컬렉션을 구현 하는 명시적 인터페이스 구현을 보여 줍니다.

// explicit_override_4.cpp
// compile with: /clr /LD
using namespace System;
ref class R : ICloneable {
   int X;

   virtual Object^ C() sealed = ICloneable::Clone {
      return this->Clone();
   }

public:
   R() : X(0) {}
   R(int x) : X(x) {}

   virtual R^ Clone() {
      R^ r = gcnew R;
      r->X = this->X;
      return r;
   }
};

참고 항목

개념

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