第十周,十一周阅读项目-继承与派生-3
2016-04-28 09:05
393 查看
/* *Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作 者:刘涛 *完成日期:2016年4月23号 *版 本 号:v1.0 * *问题描述:继承与派生 */ #include <iostream> using namespace std; class A { public: A(char *s){cout<<s<<endl;} }; class B:public A { public: B(char *s1, char *s2):A(s1){ cout<<s2<<endl; } }; class C:public A { public: C(char *s1,char *s2):A(s1){ cout<<s2<<endl; } }; class D:public B, C { public: D(char *s1,char *s2,char *s3,char *s4): B(s1,s2),C(s3,s4){cout<<s4<<endl;} }; int main() { D d("class A","class B","class C","class D"); return 0; }
运行结果:
过程分析:A是B,C的基类,B,C又是D的基类。一开始调用D的构造函数,由于B是D的基类,所以调用B类中的构造函数赋初值,然而A又是B的基类,所以又给A中的构造函数赋初值,输出s是class A,然后输出B中的s2为class B。一样的道理,由于C是D的基类,所以调用C类中的构造函数赋初值,然而A又是C的基类,所以又给A中的构造函数赋初值,输出s是class C,然后输出C中的s2为class D,最后输出s4为class D。需要注意的是,此题中各个参数弄得比较混乱,有重复使用同一变量名的情况。需要我们看清不同的同一变量名的数据成员。
相关文章推荐
- 第八周上机实践项目4(1):游戏中角色类增强版
- 用Echarts2画饼图配置 itemStyle
- Netty in Action (二十一) 第十一章节 第一部分 Netty提供的一些原生Handler和codecs
- iOS之简单瀑布流的实现
- 第九周项目2深复制体验(3)
- python3正则表达式符号和用法
- 单一职责模式
- leetcode27:Remove Element
- POSIX线程状态:Joinable和Detached
- Mac 10.11下成功安装Wex5及文件扩展属性问题
- windows系统下链接linux系统
- swust OJ 2360 Change(加强数据版)
- html的meta总结
- ajax,curl,socket
- Android keyboard菜单实现
- idea+genymotion,wait for adb
- Redis作为缓存服务器
- UIWebView加上safari风格前进后退按钮(转)
- windows mysql 自动备份的几种方法
- 使用 stylelint检查CSS_StyleLint