Funções virtual privadas
A maneira particular funções virtual são tratadas em classes derivadas foi alterado de gerenciado Extensions para C++ para Visual C++ 2008.
O nível de acesso de uma função virtual extensões gerenciadas, não restrinja a sua capacidade de ser substituído dentro de uma classe derivada.Na sintaxe de novo, uma função virtual não pode substituir uma função virtual de classe base que não possa ser acessado.Por exemplo:
__gc class Foo {
// inaccessible to a derived class
virtual void g();
};
__gc class Bar : public Foo {
public:
// in Managed Extensions, ok: g() overrides Foo::g()
// in new syntax, error: cannot override: Foo::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.Métodos herdados não são necessário que você deve ter o mesmo acesso.Neste exemplo, a alterar menos invasiva é tornar o Foo membro protected. Dessa forma programa geral acesso ao método por meio de Foo ainda é proibido
ref class Foo {
protected:
virtual void g();
};
ref class Bar : Foo {
public:
virtual void g() override;
};
Observe que a ausência do explícita virtual palavra-chave na classe base, sob a nova sintaxe gera uma mensagem de aviso.
Consulte também
Conceitos
Declarações de membro dentro de uma classe ou interface