网站网业设计,2017常用的网站,google推广seo,简单大气食品农业网站源码1、基于向上类型转换#xff0c;基类通过虚函数可以对多个子类相似的功能实现统一管理。
2、例子#xff1a;
A为基类#xff0c;B、C为A的同级子类。virtual只需在基类中标识一次#xff0c;子类无需重复标识。class A
{virtual void display(){cout我是A基类通过虚函数可以对多个子类相似的功能实现统一管理。
2、例子
A为基类B、C为A的同级子类。virtual只需在基类中标识一次子类无需重复标识。class A
{virtual void display(){cout我是Aendl}
}
class B:public A
{void display(){cout我是Bendl}
}class C:public A
{void display(){cout我是Cendl}
}void display(A s)//以A类型作为参数的顶层函数不同于类中的成员函数
{s.display();//调用对象s的成员函数
}
int main()
{A x1;B x2;C x3;display(x1);//显示我是A。display(x2);//参数x2向上转换为x1类型显示我是B。display(x3);//参数x3向上转换为x1类型显示我是C。
}通过显示我们注意到以下两点1、尽管在顶层函数的定义中是以基类A作为其参数但却能接受基类A的任一子类作为其参数。事实上这是基于自动向上类型转换即子类转换为它的父类型。2、虽然子类转换成了它的父类型但却可正确调用属于子类而不属于父类的成员函数。这是虚函数的功劳。这样我们通过设计一个以基类型作为参数的顶层函数就可实现基类及其所有子类相似功能的统一管理而不用理会不同对象自身的类型。当然你还是可以利用域解析符去调用想要的成员函数但情况并不总是那么顺利。当类层次很多时你可能都不太记得你创建的对象属于哪个类型了。