Esto suele tener efecto cuando se utilizan punteros.
Por ejemplo
# include & ltiostream.h & gt
Nivel A
{
Público:
void print me(){ cout & lt;& lt"Esta es la impresión Clase A. "& lt& ltendl};
};
Clase B : público A
{
Público:
void print me(){ cout & lt; & lt"Esta es impresión de Clase B. "& lt& ltendl }
};
Categoría C: pública clase B
{
Pública:
void print me ( ){ cout <<"Esta es impresión tipo C."<<endl}
};
Impresión no válida (A *a)
{ p>
a-& gt;imprimirme();
}
void main()
{
B b
C c
b * p 1 = &b;
p2 = &c;
Imprimir (p 1);
Imprimir (p2);
}
Si se elimina la palabra clave de función virtual de la clase principal, la salida será a.
Si agregas palabras clave,
# include & ltiostream.h & gt
Nivel A
{
Público:
virtual void print me(){ cout & lt;& lt"Esta es impresión Clase A. "& lt& ltendl};
};
Clase B: pública A
{
Pública:
void print me(){ cout <<"Esta es la impresión de nivel B. "& lt& ltendl}
};
Clase C: Pública Clase B
{
Pública:
void print me(){ cout <<"Esta es impresión tipo C."<<endl}
};
Impresión nula(A *a)
{
a-& gt;imprimirme();
}
void main()
{
B b
C c
b * p 1 = &b;
p2 = &c;
Imprimir (p 1 );
Imprimir (p2);
}
Luego generar byc.