Açık Geçersiz Kılmalar (C++ Bileşen Uzantıları)
Bu konuda nasıl bir temel sınıf veya arabirim üyesi açıkça geçersiz anlatılmaktadır.(Açık) adlı bir geçersiz kılma yöntemi farklı bir ada sahip bir türetilmiş yöntem geçersiz kılmak için yalnızca kullanılmalıdır.
Tüm çalışma zamanlarının
Sözdizimi
overriding-function-declarator = type::function [,type::function] { overriding-function-definition }
overriding-function-declarator = function { overriding-function-definition }
Parametreler
geçersiz kılma-işlevi-Bildiricisi
Dönüş türü, adı ve bağımsız değişken listesi geçersiz kılma fonksiyonu.Geçersiz kılma işlevi kılınmasını işlevi ile aynı ada sahip yok dikkat edin.türü
Temel tür geçersiz kılmak için bir işlev içerir.işlev
Geçersiz kılmak için bir veya daha fazla işlev adları virgülle ayrılmış listesi.geçersiz kılma-işlev tanımı
Geçersiz kılma işlevi tanımlayan işlev ifadeleri.
Notlar
Kullanım açık yöntem imzası için diğer ad oluşturma veya yöntem witht aynı imza için farklı uygulamaları sağlamak için geçersiz kılar.
Devralınan türler ve devralınan türü üyeler davranışını değiştirme hakkında daha fazla bilgi için bkz: Geçersiz Kılma Tanımlayıcıları (C++ Bileşen Uzantıları).
Windows Çalışma Zamanı
Gereksinimler
Derleyici seçeneği:/ZW
Ortak Dil Çalışma Zamanı
Notlar
Açık hakkında bilgi için yerel kodda geçersiz kılar veya derlenmiş HTML kodu ile /clr:oldSyntax, bkz: Açık geçersiz kılar (C++).
Gereksinimler
Derleyici seçeneği:/clr
Örnekler
Örnek
Aşağıdaki kod örneği basit, örtülü geçersiz kılma ve üye uygulamasının temel arabiriminde açıkça geçersiz kılmaları kullanmayan gösterir.
// 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();
}
Çıktı
Örnek
Aşağıdaki kod örneği, açıkça geçersiz kılma sözdizimini kullanarak tüm arabirim üyeleri ortak imzayla uygulamak gösterilmiştir.
// 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();
}
Çıktı
Örnek
Aşağıdaki kod örneği, uygulama işlev adından işlevi geçersiz kılma nasıl olabilir gösterir.
// 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();
}
Çıktı
Örnek
Aşağıdaki kod örneği, tür güvenli tahsilat uygulayan açık arabirim uygulaması gösterir.
// 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;
}
};