C++虚函数基础
来源:互联网 发布:软件测试质量管理 编辑:程序博客网 时间:2024/05/31 06:23
我也碰到过你类似的迷惑,特别是书上举的例子,让你越来越迷惑。事实上,你根本就无法想象那些作者的无知和愚蠢,举的垃圾例子给你感觉就是对知识的侮辱! 好了,下面我用一句话给你概括虚函数的作用,再用一个例子让你去体会。 1、基于向上类型转换,基类通过虚函数可以对多个子类相似的功能实现统一管理。 2、例子: A为基类,B、C为A的同级子类。virtual只需在基类中标识一次,子类无需重复标识。 class A { virtual void display(){cout<<"我是A"<<endl;} } class B:public A { void display(){cout<<"我是B"<<endl;} }
class C:public A { void display(){cout<<"我是C"<<endl;} }
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、虽然子类转换成了它的父类型,但却可正确调用属于子类而不属于父类的成员函数。这是虚函数的功劳。 这样,我们通过设计一个以基类型作为参数的顶层函数,就可实现基类及其所有子类相似功能的统一管理,而不用理会不同对象自身的类型。 当然你还是可以利用域解析符去调用想要的成员函数,但情况并不总是那么顺利。当类层次很多时,你可能都不太记得你创建的对象属于哪个类型了。
- C 基础 (函数)
- C基础:函数
- C语言基础 函数
- C语言基础 函数
- C函数指针基础
- 【基础C&C++】内存函数
- C语言基础函数(一)
- C语言基础 函数指针
- C++---基础篇(函数)
- C语言函数指针基础
- C语言函数指针基础
- C语言函数指针基础
- C语言函数指针基础
- C语言函数指针基础
- C语言函数指针基础
- C语言函数指针基础
- C语言函数指针基础
- C语言函数指针基础
- POJ 3348 凸包面积 解题报告
- GDB常用命令使用说明
- 实名微信号在那能买到
- Raid 技术简介
- Java异常分类
- C++虚函数基础
- oracle 正则表达式
- linux守护进程、SIGHUP与nohup详解
- 突破代码结构
- springmvc 上传文件
- extern关键字
- 主机接口
- UVALive
- C/C++-----static详解