Partilhar via


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

Referência

Substitui explícita