Udostępnij za pośrednictwem


Jawne zastąpienia (C++ Component Extensions)

W tym temacie omówiono sposób jawnie zastępują członka klasy podstawowej lub interfejsu.Nazwany override (explicit) można używać tylko do zastąpić metodę metodą pochodnych, który ma inną nazwę.

Wszystkich modułów wykonawczych.

Składnia

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

Parametry

  • niewłaściwy przesłanianie funkcja deklarator
    Zwrotu typu, nazwy i argument lista funkcji nadrzędnych.Należy zauważyć, że funkcja nadrzędnych nie musi mieć taką samą nazwę jak funkcja zastąpieniu.

  • Typ
    Typ podstawowy zawiera funkcję, aby zastąpić.

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

  • przesłanianie--definicja funkcji
    Organ instrukcje funkcyjne definiujących funkcji nadrzędnych.

Uwagi

Użyj jawnego zastępuje utworzony alias podpis metody lub zapewniają różne implementacje dla metody witht ten sam podpis.

Informacje dotyczące modyfikowania zachowania dziedziczone typy i członków dziedziczonych typu, zobacz Specyfikatory zastąpienia (C++ Component Extensions).

Środowisko wykonawcze systemu Windows

fw0bbh51.collapse_all(pl-pl,VS.110).gifWymagania

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 przesłonięcia (C++).

fw0bbh51.collapse_all(pl-pl,VS.110).gifWymagania

Opcja kompilatora:/clr

fw0bbh51.collapse_all(pl-pl,VS.110).gifPrzykłady

Przykład

Poniższy przykład kodu pokazuje override proste, oczywiste i wykonania członka w interfejs podstawowy, nie używając jawne 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 zaimplementować wszystkich członków interfejsu podpisem wspólne, używając 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 funkcji 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

Składnik rozszerzeń dla platform Runtime