substituir explícita de um membro de interface
A sintaxe para declarar uma substituir explícita de um membro da interface em uma classe foi alterado de gerenciado Extensions para C++ para Visual C++ 2008.
Você geralmente deseja fornecer duas instâncias de um membro da interface em uma classe que implementa a interface – um que é usado quando objetos de classe são manipulados através de um identificador de interface e que é 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();
};
No gerenciado Extensions fazemos isso fornecendo uma declaração explícita de método da interface nome do método qualificado com o nome da interface.A instância específicas de classe é não qualificada.Isso elimina a necessidade de downcast o valor retornado de Clone, neste exemplo, quando chamado explícita por meio de uma ocorrência da R.
Na sintaxe de novo, um mecanismo geral de substituição foi introduzido que substitui a sintaxe de gerenciado 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 seja substituído seja fornecido um nome exclusivo dentro da classe.Aqui, forneci o nome estranho de InterfaceClone. O comportamento ainda é o mesmo – uma telefonar por meio de ICloneable interface invoca o renomeado InterfaceClone, durante uma telefonar por meio de um objeto do tipo R invoca a segunda Clone instância.
Consulte também
Conceitos
Declarações de membro dentro de uma classe ou interface