第十周项目—阅读程序,写出执行结果(3)
2016-05-05 21:21
260 查看
/* *Copyright(c) 2016.烟台大学计算机与控制工程学院 *ALL rights reserved. *文件名称:test.cpp *作者:杨驰 *完成日期:2016年5月5日 *问题描述:阅读程序,写出执行结果 */ #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的基类,其继承类型为public。B,C是派生类D的基类,其继承类型为public。主函数中声明了一个派生类D
的对象,生成对象d时调用了派生类的构造函数,在执行派生类D的构造函数时,先调用基类B,C的构造函数。调用B构造
函数时,A是B的基类,所以先调用A中的构造函数,输出s是class A,接着输出B中的s2是class B。在调用C的构造函数
时,同理。
学习心得:在此程序中,参数比较多,而且重复使用同一变量名,在这样的情况下,我们可以采取贺老师比较提倡的方法 在纸上把
此程序的过程画出来,这样思路会比较清晰,利于分析问题。
相关文章推荐
- 通过UIWindow创建状态栏的通知
- 周记
- 移动开发生态渐成
- Vertrigo Serv + testlink 环境搭建
- C#之二十三 打印和水晶报表
- C#之二十三 打印和水晶报表
- 二叉树中序前序序列(或后序)求解树
- Java进阶学习第十一天——cookie&session入门
- C#之二十三 打印和水晶报表
- leetcode 13 Roman to Integer C++
- Java 学习笔记
- ZJNU - 1433 [a,b]区间素数的个数
- 找出1到n所有不重复的排列,即n的全排列。
- TCPClient.py&TCPServer.py——自顶向下方法实例
- List和ListIterator的常见用法及特性
- 面向对象设计原则之四:依赖倒置原则
- 数据结构之二叉树的递归建立和遍历
- 处理哈希冲突的线性探测法
- 方法与消息
- nyoj678