using namespace std;
class A
{
public:
void foo () {
printf ("1\n");
}
virtual void fun () {
printf ("2\n");
}
};
class B
: public A
{
public:
void foo () {
printf ("3\n");
}
virtual void fun () {
printf ("4\n");
}
};
void main ()
{
A a;
B b;
A* pa = &a;
pa->foo (); // 1
pa->fun (); // 2
pa = &b;
pa->foo (); // 1
pa->fun (); // 4
B* pb = (B*)&a; // ps:不強制轉換會報錯
pb->foo (); // 3
pb->fun (); // 2
pb = &b;
pb->foo (); // 3
pb->fun (); // 4
getchar ();
}