自己写的小程序里很少用,稍大型点的项目里很常见吧。
按照你那么写肯定没问题,但是扩展性太差。
比如,代码中有这么个函数,
/// ///重复的代码抽象成函数,当然这里函数很简单了,大型项目里肯定复杂的多
void out_put_name(CEmployee *pWorker)
{
pWorker->OutputName();
}
///然后main函数相应的修改
int main()
{
CEmployee *pWorker;
pWorker=new COperator(); ///这里是个向上类型转换
out_put_name(pWorker); ////调用函数
delete pWorker;
pWorker=NULL;
pWorker=new CSystemManager();
out_put_name(pWorker); ////调用函数
delete pWorker;
pWorker=NULL;
return 0;
}
///可以看到无论新增多少个子类,out_put_name方法是不需要改变的,而你只要调用它就可以了,而如果按照你说的那样,想抽象出一个out_put_name方法的话,每个新增子类的out_put_name方法肯定都是不同的,这样扩展性就很差了