Udostępnij za pośrednictwem


Jawne zastąpienia (C++ Component Extensions)

W tym temacie omówiono sposób zastąpić jawnie członek klasy podstawowej lub interfejsu.Nazwany override (jawny) można używać tylko do zastępowania metody z pochodna metoda, która ma inną nazwę.

Wszystkie środowiska wykonawcze

Składnia

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

Parametry

  • overriding-function-declarator
    Zwrotu typu, nazwy i argument lista funkcji nadrzędnych. Należy zauważyć, że funkcja nadrzędnym muszą mieć taką samą nazwę jak funkcja została zastąpiona.

  • type
    Typ podstawowy zawiera funkcję do zastępowania.

  • function
    Lista rozdzielanych przecinkami jedną lub więcej nazw funkcji, aby zastąpić.

  • overriding-function-definition
    Sprawozdania organu funkcji, które definiują funkcja nadrzędnych.

Uwagi

Użyj jawnego zastępuje do utworzenia aliasu dla podpis metody, lub zapewnienia różnych implementacji dla metody witht sam podpis.

Aby uzyskać informacji o modyfikowaniu zachowanie dziedziczone typy i elementy członkowskie typu dziedziczonych, zobacz Specyfikatory zastąpienia (C++ Component Extensions).

Środowisko wykonawcze systemu Windows

Wymagania

Opcja kompilatora: /ZW

Środowisko uruchomieniowe języka wspólnego

Uwagi

Informacje o jawnych zastępuje w kodzie macierzystym lub kod skompilowany z /clr:oldSyntax, zobacz Jawne zastąpienia (C++).

Wymagania

Opcja kompilatora: /clr

Przykłady

Przykład

Poniższy przykład kodu pokazuje override proste, oczywiste i wykonania członka w interfejs podstawowy, nie za pomocą jawnych przesłonięcia.

// 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();
}

Dane wyjściowe

  

Przykład

Poniższy przykład kodu pokazuje jak wdrożyć wszystkich członków interfejsu za pomocą wspólnych podpisu przy użyciu składni jawne override.

// 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();
}

Dane wyjściowe

  
  

Przykład

Poniższy przykład kodu pokazuje, jak zastępowanie funkcja może mieć inną nazwę funkcji, które implementuje.

// 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();
}

Dane wyjściowe

  

Przykład

Poniższy przykład kodu pokazuje jawnej implementacji, która implementuje bezpiecznego gromadzenia typu.

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

Zobacz też

Koncepcje

Component Extensions dla platform środowiska uruchomieniowego