Funções virtuais privadas
A forma particulares funções virtuais são tratadas em classes derivadas foi alterado de Managed Extensions for C++ para Visual C++.
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 classe base que não pode acessar.Por exemplo:
__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 deste tipo de design para a nova sintaxe.Um simplesmente tem que disponibilizar os membros de classe base – ou seja, não-particular.Métodos herdados não precisam ter o mesmo acesso.Neste exemplo, a alteração menos invasiva é que o membro MyBaseClass protected.Dessa maneira 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
Conceitos
Declarações de membro em uma classe ou uma interface (C++/CLI)