Partilhar via


Funções de virtuais Private

A maneira como são tratadas em classes derivadas de funções de virtuais private foi alterado a partir de Managed Extensions for C++ para Visual C++ 2010.

O nível de acesso de uma função virtual Managed Extensions não restrinja a capacidade de ser substituído em uma classe derivada. Na sintaxe de novo, uma função virtual não pode substituir uma função virtual da classe base que não pode acessar. For example:

__gc class MyBaseClass {
   // inaccessible to a derived class 
   virtual void g();
};

__gc class MyDerivedClass : public MyBaseClass {
public:
   // okay in Managed Extensions; g() overrides MyBaseClass::g()
   // error in new syntax; cannot override: MyBaseClass::g() is inaccessible …
   void g();
};

Não há nenhum mapeamento real desse tipo de design para a nova sintaxe. Simplesmente, é preciso disponibilizar os membros da classe base – ou seja, não-particulares. Os métodos herdados não é necessário que você deve ter o mesmo acesso. Neste exemplo, a alteração de menos invasiva é que o membro MyBaseClass protected. Dessa forma o acesso do programa geral para o método por meio de MyBaseClass ainda é proibido.

ref class MyBaseClass {
protected:
   virtual void g();
};

ref class MyDerivedClass : MyBaseClass {
public:
   virtual void g() override;
};

Observe que a ausência de explícita virtual palavra-chave na classe base, sob a nova sintaxe, gera uma mensagem de aviso.

Consulte também

Referência

Member Visibility

Conceitos

Declarações de membro dentro de uma classe ou Interface