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
Pož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++).
Požadavky
Volba kompilátoru:/clr
Pří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;
}
};