Jawne zastępowanie elementu członkowskiego interfejsu
Składnia deklaracji przesłonięcie jawne członka interfejsu w klasie zmienił się z zarządzanych rozszerzeń języka C++ do Visual C++.
Często zachodzi potrzeba zapewnienia dwa wystąpienia członka interfejsu w obrębie klasy, która implementuje interfejs-taki, który jest używany, gdy obiekty klas są manipulowane przez dojście do interfejsu i jest używany w przypadku obiektów klasy za pomocą interfejsu klasy.Na przykład:
public __gc class R : public ICloneable {
// to be used through ICloneable
Object* ICloneable::Clone();
// to be used through an R
R* Clone();
};
W zarządzanych rozszerzeń robimy to poprzez zapewnienie jawna deklaracja metody interfejsu o nazwie metody kwalifikowaną nazwą interfejsu.Wystąpienie klasy specyficzne jest bez zastrzeżeń.Eliminuje to potrzebę spuszczonymi wartość zwracaną przez Clone, w tym przykładzie, gdy jawne wywoływana za pośrednictwem instancji R.
W nowych składni ogólne mechanizm nadrzędnym został wprowadzony, który zastępuje składni rozszerzeń zarządzanych.Naszym przykładzie będzie przebudowywany w następujący sposób:
public ref class R : public ICloneable {
public:
// to be used through ICloneable
virtual Object^ InterfaceClone() = ICloneable::Clone;
// to be used through an R
virtual R^ Clone();
};
Tej poprawki wymaga, aby członka interfejsu zastępowaniu jawnie podane unikatową nazwę w obrębie tej klasy.W tym miejscu już dostarczone niewygodne nazwę InterfaceClone.Zachowanie jest jeszcze samo-wywołanie przez ICloneable zmieniono nazwę wywołuje interfejs InterfaceClone, podczas rozmowy za pośrednictwem obiektu typu R wywołuje drugi Clone wystąpienie.
Zobacz też
Informacje
Koncepcje
Deklaracje członków w obrębie klasy lub interfejsu (C++/CLI)