Açık Geçersiz Kılmalar (C++/CLI ve C++/CX)
Bu konu başlığında, bir temel sınıfın veya arabirimin üyesini açıkça nasıl geçersiz kılılacağı açıklanmaktadır. Adlandırılmış (açık) geçersiz kılma yalnızca farklı bir ada sahip türetilmiş bir yöntemle bir yöntemi geçersiz kılmak için kullanılmalıdır.
Tüm Çalışma Zamanları
Sözdizimi
overriding-function-declarator = type::function [,type::function] { overriding-function-definition }
overriding-function-declarator = function { overriding-function-definition }
Parametreler
overriding-function-declarator
Geçersiz kılma işlevinin dönüş türü, adı ve bağımsız değişken listesi. Geçersiz kılma işlevinin geçersiz kılınan işlevle aynı ada sahip olması gerekmediğini unutmayın.
type
Geçersiz kılınacak bir işlev içeren temel tür.
Işlev
Geçersiz kılınacak bir veya daha fazla işlev adının virgülle ayrılmış listesi.
geçersiz kılma-işlev-tanımı
Geçersiz kılma işlevini tanımlayan işlev gövdesi deyimleri.
Açıklamalar
Bir yöntem imzası için diğer ad oluşturmak veya aynı imzaya sahip yöntemler için farklı uygulamalar sağlamak için açık geçersiz kılmaları kullanın.
Devralınan türlerin ve devralınan tür üyelerinin davranışını değiştirme hakkında bilgi için bkz . Geçersiz Kılma Tanımlayıcıları.
Windows Çalışma Zamanı
Gereksinimler
Derleyici seçeneği: /ZW
Ortak Dil Çalışma Zamanı
Açıklamalar
Yerel koddaki veya ile /clr:oldSyntax
derlenen koddaki açık geçersiz kılmalar hakkında bilgi için bkz . Açık Geçersiz Kılmalar.
Gereksinimler
Derleyici seçeneği: /clr
Örnekler
Aşağıdaki kod örneği, açık geçersiz kılmaları kullanmayan temel arabirimdeki bir üyenin basit, örtük bir geçersiz kılmasını ve uygulamasını 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();
}
X::f override of I1::f
Aşağıdaki kod örneğinde, açık geçersiz kılma söz dizimi kullanılarak ortak imzaya sahip tüm arabirim üyelerinin nasıl uygulanacakları gösterilmektedir.
// 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();
}
X::f override of I1::f and I2::f
X::f override of I1::f and I2::f
Aşağıdaki kod örneği, bir işlev geçersiz kılma işleminin uyguladığı işlevden farklı bir ada sahip olabileceğini 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();
}
X::g
Aşağıdaki kod örneği, tür güvenli koleksiyonu uygulayan açık bir arabirim uygulamasını 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;
}
};
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin