#include <iostream>
using namespace std;
class A
{
public:
A(){cout << "This is A" << endl;}
virtual ~A(){cout << "This is ~A" << endl;}
virtual void PureV()= 0;
virtual void boo() {cout << "A::boo" << endl;}
void foo() {bar();}
private:
virtual void bar(){cout << "A::bar" << endl;}
};
class B: public A
{
public:
B(){cout << "This is B" << endl;}
virtual ~B(){cout << "This is ~B" << endl;}
void PureV() {cout << "B::PureV" << endl;}
void boo() {cout << "B::boo" << endl;}
private:
virtual void bar(){cout << "B::bar" << endl;}
};
int main()
{
A* a = new B();
a->PureV();
a->boo();
a->foo();
delete a;
return 0;
}
输出顺序:
This is A
This is B
B::PureV
B::boo
B::bar
This is ~B
This is ~A
基础的东西很奇妙~