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