#include <iostream>
using namespace std;
class A {
private:
int nVal;
public:
void Fun()
{
cout << "A::Fun" << endl;
}
void Do()
{
cout << "A::Do" << endl;
}
};
class B :public A {
public:
virtual void Do()
{
cout << "B::Do" << endl;
}
};
class C :public B {
public:
void Do()
{
cout << "C::Do" << endl;
}
void Fun()
{
cout << "C::Fun" << endl;
}
};
void Call(B& p)
{
p.Fun(); p.Do();
}
int main() {
C c; Call(c);
return 0;
}
In dem obigen Code, um eine Basisklasse Bezug auf eine abgeleitete Klasse ankündigt, ist die AusgabeC++ Polymorphismus, über
A::Fun
C::Do
Aber ich kann es nicht verstehen. in dem Funktionsaufruf (B & p), sollte die Referenz P c von C-Klasse beziehen, warum der Ausgang
C::Fun
C::Do
Wenn ankündigen aa Basisklasse Bezugnahme auf eine abgeleitete Klasse nicht
ist, die unterschiedliche Basisklasse Sinn machen?
Sie müssen die Funktionen in der Basisklasse virtuell machen. –