#include <iostream>
using namespace std;
class A
{
public:
A(){ cout<<"A"<<endl;}
virtual ~A() {cout <<"~A"<<endl;}
virtual void f1() { cout << "f1 yu A" <<endl;}
void f2() { cout << "f2 yu A" <<endl;}
void f3() { cout << "f3 yu A" <<endl;}
};
class B : public A
{
public:
B(){ cout<<"B"<<endl;}
virtual ~B() {cout <<"~B"<<endl;}
virtual void f1() { cout << "f1 yu B" <<endl;}
void f3() { cout << "f3 yu B" <<endl;}
};
void main()
{
A* a2 = new A;
B* b2 = new B;
A a;
B b;
a.f1();
b.f1();
a.f2();
b.f2();
a.f3();
b.f3();
cout << endl;
A* a1 = new B();
a1->f1();
a1->f2();
a1->f3();
cout << "endl" << endl;
}
输出结果
A
A
B
A
A
B
f1 yu A
f1 yu B
f2 yu A
f2 yu A
f3 yu A
f3 yu B
A
B
f1 yu B
f2 yu A
f3 yu A
endl
~B
~A
~A