如下面代码段:
(1)本代码段包括了函数的重载、重写、覆盖。
(2)本代码段示例了实现多态的两种方法:基类的指针和基类的引用。
#include <iostream>
using namespace std;
class Base
{
public:
//fun是函数重写,实现多态,
virtual void fun(int num=10)
{
cout<<"i'm base fun with "<<num<<endl;
}
//fun1是函数覆盖
void fun1()
{
cout<<"i'm base fun with "<<0<<endl;
}
};
class Derived :public Base
{
public:
virtual void fun(int num=20)
{
cout<<"i'm derived fun with "<<num<<endl;
}
void fun1()
{
cout<<"i'm derived fun with "<<1<<endl;
}
//本fun1是函数重载
void fun1(int num)
{
cout<<"i'm derived fun with "<<num<<endl;
}
};
int main(int argc, char **argv)
{
Derived d;
Base &b = d;
b.fun1();
d.fun1();
Base *pb = &d;
pb->fun1();
((Derived*)pb)->fun1();
d.fun1(10);
system("pause");
return 0;
}