Substituir explícita de um membro de Interface
A sintaxe para declarar uma substituir explícita de um membro de interface dentro de uma classe foi alterado de Managed Extensions for C++ para Visual C++.
Você geralmente deseja fornecer duas instâncias de um membro de interface dentro de uma classe que implementa a interface – uma que é usada quando os objetos de classe são manipulados através de um identificador de interface e é usado quando os objetos de classe são usados por meio da interface de classe.Por exemplo:
public __gc class R : public ICloneable {
// to be used through ICloneable
Object* ICloneable::Clone();
// to be used through an R
R* Clone();
};
Nas extensões gerenciado fazemos isso fornecendo uma declaração explícita do método de interface com o nome do método qualificado com o nome da interface.A instância de classe específica não é qualificada.Isso elimina a necessidade precise o valor de retorno Clone, neste exemplo, quando uma chamada explícita por meio de uma instância de R.
Na sintaxe de novo, um mecanismo de substituição geral foi introduzido que substitui a sintaxe de Managed Extensions.Nosso exemplo poderia ser reescrito da seguinte maneira:
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();
};
Esta revisão requer que o membro de interface explicitamente que está sendo substituído seja recebe um nome exclusivo dentro da classe.Aqui, forneci o nome estranho do InterfaceClone.O comportamento ainda é o mesmo – uma chamada por meio de ICloneable interface invoca renomeadas InterfaceClone, enquanto uma chamada por meio de um objeto do tipo R invoca o segundo Clone instância.
Consulte também
Referência
Substituições Explícitas (Extensões de Componentes C++)
Conceitos
Declarações de membro em uma classe ou uma interface (C++/CLI)