第十三周阅读程序 纯虚函数
2016-05-22 16:40
155 查看
/* *Copyright(c) 2016,烟台大学计算机学院 *作 者:刘金石 *完成日期:2016年5月21日 *问题描述:虚析构函数练习 */ #include<iostream> using namespace std; class Base { public: virtual void who()=0; }; class FirstDerived:public Base { public: void who(){cout<<"F";} }; class SecondDerived:public Base { public: void who(){cout<<"S";} }; int main() { FirstDerived first_obj; SecondDerived Second_obj; Base &bref=first_obj; bref.who(); bref=Second_obj; bref.who(); Base *bp; bp=&first_obj; bp->who(); bp=&Second_obj; bp->who(); return 0; }
运行结果:
<img src="http://img.blog.csdn.net/20160522163957394?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
<pre name="code" class="cpp">程序分析: 程序中Base、FirstDerived和SecondDerived属于同一个类族,抽象类Base通过纯虚函数 为整个类族提供了通用的外部接口定义。Base &bref=first_obj;基类的引用可以作为派生类 对象的别名,符合类型兼容规则。所以bref.Who();输出“F”,bref=second_obj;bref已经被 引用赋值,其值不能被更改,故bref.Who();仍然输出“F”。bp为指向基类的指针,可以指向 派生类,所以分别输出“F”和“S”。
相关文章推荐
- LeetCode经典题目笔记(一)
- bootstrap固定响应式导航
- 2016"百度之星" - 初赛(Astar Round2B)1003 瞬间移动 组合数学+逆元
- Python开发轻量级爬虫
- 切换淡出 / 滑动
- React Native 安装开发环境及如何编写Hello World程序
- Java中的文件和目录管理(下)----Path、Files
- JAVA之Math类常用数学运算记录
- 一步步学spark之一scala条件表达式1.4
- textField控制字数(字符16个)
- iOS面试和招聘
- 如何写出高效优美的单片机C语言代码?
- string.format()函数的用法
- 使用变量缓存jQuery对象
- android开发笔记之打造终极适配器
- Linux学习之多命令顺序执行
- JQuery利用sort对DOM元素进行排序
- Android 设置键盘弹出后顶起布局
- java学习记录
- Bring Your Android App to Chromebooks