Sdílet prostřednictvím


Explicitní přepsání (rozšíření komponent C++)

Toto téma popisuje, jak explicitně přepsat člen základní třídy nebo rozhraní.Pojmenované override (explicitní) by používat pouze potlačení metody odvozených metodou, která má jiný název.

Všechny knihovny runtime

Syntaxe

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

Parametry

  • přepsání declarator funkce
    Návratový typ, název a argument seznam převažující funkce.Všimněte si, že převažující funkce nemusí mít stejný název jako funkce přepsáním.

  • Typ
    Základní typ, který obsahuje funkci přepsat.

  • funkce
    Čárkami oddělený seznam jeden nebo více názvů funkce potlačení.

  • potlačení definice funkce
    Příkazy funkce orgánu, definující převažující funkce.

Poznámky

Použijte explicitní přepíše vytvoření aliasu pro podpis metody nebo poskytovat různými implementacemi pro metody witht stejný podpis.

Informace o úpravě chování zděděné typů a typ zděděné členy Override – specifikátory (rozšíření komponent C++).

Windows Runtime

fw0bbh51.collapse_all(cs-cz,VS.110).gifPožadavky

Volba kompilátoru:/ZW

Common Language Runtime

Poznámky

Informace o explicitní přepíše v nativním kódu nebo kód zkompilován s /clr:oldSyntax, viz Explicitní přepis (C++).

fw0bbh51.collapse_all(cs-cz,VS.110).gifPožadavky

Volba kompilátoru:/clr

fw0bbh51.collapse_all(cs-cz,VS.110).gifPříklady

Příklad

Následující příklad kódu ukazuje jednoduché, implicitní přepsat a provádění člen základní rozhraní pomocí explicitních lokální změny.

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

Výsledek

  

Příklad

Následující příklad kódu ukazuje, jak implementovat všechny členy rozhraní společného podpisu pomocí syntaxe přepsat explicitní.

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

Výsledek

  
  

Příklad

Následující příklad kódu ukazuje, jak přepsat funkci může mít jiný název funkce, kterou 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();
}

Výsledek

  

Příklad

Následující příklad kódu ukazuje explicitní implementace rozhraní typu bezpečné shromažďování implementuje.

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

Viz také

Koncepty

Součást rozšíření pro Runtime platformy