#include<iostream>
#include <complex>
using
namespace
std;
//----------------------------------------------
class
Base
//基类
{
public
:
virtual
void
f(
int
);
virtual
void
f(
double
);
virtual
void
g(
int
i=10);
};
void
Base::f(
int
)
{
cout<<
"Base::f(int)"
<<endl;
}
void
Base::f(
double
)
{
cout<<
"Base::f(double)"
<<endl;
}
void
Base::g(
int
i)
{
cout<<i<<endl;
}
//------------------------------------------------
class
Dervived:
public
Base
{
public
:
void
f(complex<
double
>);
void
g(
int
i=20);
};
void
Dervived::f(complex<
double
>)
{
cout<<
"Dervived::f(complex<double>)"
<<endl;
}
void
Dervived::g(
int
i)
{
cout<<i<<endl;
}
//----------------------------------------------
void
main()
{
Base b;
Dervived d;
Base *pb=
new
Dervived;
b.f(1.0);
//基类对象调用,执行基类的函数
d.f(1.0);
//子类对象调用,执行子类的函数
pb->f(1.0);
//基类的指针,指向子类,调用函数时,执行基类的函数
b.g();
//基类对象调用,执行子类的函数
d.g();
//子类对象调用,执行子类的函数
pb->g();
//基类的指针,指向子类,调用函数时,执行基类的函数
delete
pb;
}
|
一道关于继承和多态的题目
最新推荐文章于 2022-05-08 09:22:22 发布