最近两天看了很多探讨C++中隐藏与重写的文章,自己总结了一段代码,以便日后回顾,如下:
#include<iostream>
using namespace std;
class Base
{
public:
virtual void f1()
{
cout << "Base::f1()" << endl;
};
void f2()
{
cout << "Base::f2()" << endl;
}
void f3()
{
cout << "Base:f3()" << endl;
}
};
class Derived : public Base
{
public:
void f1()
{
cout << "Derived::f1(float)" <<endl;
}
void f2()
{
cout << "Derived::f2()" << endl;
}
void f4()
{
cout << "Derived::f4()" << endl;
}
};
void main()
{
Base b;
Derived d;
Base* p1 = &b;
p1->f1();
p1->f2();
p1->f3();
cout << endl;
p1 = &d;
p1->f1();
p1->f2();
p1->f3();
cout << endl;
Derived* p2 = &d;
p2->f1();
p2->f2();
p2->f3();
p2->f4();
cout << endl;
p2 = (Derived*)&b;
p2->f1();
p2->f2();
p2->f3();
p2->f4();
cout << endl;
}