?????????C++???????????????????C++??????????????????????????????????????????????
?????????????????????Щ????????????????????????????????????????????????????????
?????????????????????????????????????????л??
?????????C++????????????仰??????????t??????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????κζ????????????????????
??????????????????????

 

#include <iostream>
using namespace std;
class A
{
public:
void fA() { cout << "A::fA()" << endl; }
virtual void vfA() { cout << "A::vfA()" << endl; }
void emptyB() { cout << "A::emptyB()" << endl; }
void vfAonly() { cout << "A::vfAonly()" << endl; }
};
class B : public A
{
public:
void fB() { cout << "B::fB()" << endl; }
virtual void vfA() { cout << "B::vfA()" << endl; }
virtual void vfB() { cout << "B::vfB()" << endl; }
void emptyA() { cout << "B::emptyA()" << endl; }
virtual void vfAonly() { cout << "B::vfAonly()" << endl; }
};
int main()
{
A* p = new B;
B& r = *(B*)p;
p->fA();            // 1
//p->fB();            // 2
p->vfA();            // 3
//p->vfB();            // 4
//p->emptyA();        // 5
p->emptyB();        // 6
p->vfAonly();        // 7
cout << endl;
r.fA();                // 8
r.fB();                // 9
r.vfA();            // 10
r.vfB();            // 11
r.emptyA();            // 12
r.emptyB();            // 13
r.vfAonly();        // 14
delete p;
return 0;
}