Considere el siguiente fragmento:Cambiar el modo de acceso de función en la clase derivada
struct Base
{
virtual ~Base() {}
virtual void Foo() const = 0; // Public
};
class Child : public Base
{
virtual void Foo() const {} // Private
};
int main()
{
Child child;
child.Foo(); // Won't work. Foo is private in this context.
static_cast<Base&> (child).Foo(); // Okay. Foo is public in this context.
}
¿Es esta C++ legal? "Esto" está cambiando el modo de acceso de la función virtual en la clase derivada.
... ¿Compiló y ejecutó? – AndyG
@SauceMaster, eso no es una muy buena indicación de si el código es legal en C++. Hay montones y montones de código C++ que se compilará y ejecutará, pero todavía invoca un comportamiento indefinido. Cambie los compiladores, los indicadores del compilador, la versión del compilador y el auge, deja de funcionar. – Glen
De acuerdo con Glen. Es por eso que pregunté aquí. – hlx236sk