第十一周阅读程序(4)
来源:互联网 发布:文本相似度匹配算法 编辑:程序博客网 时间:2024/05/22 15:01
代码:
#include<iostream>using namespace std;class Part //部件类{public: Part(); Part(int i); ~Part();private: int val;};Part::Part(){ val=0; cout<<"调用Part的默认构造函数:"<<val<<endl;}Part::Part(int i){ val=i; cout<<"调用Part的构造函数: "<<val<<endl;}Part::~Part(){ cout<<"调用Part的析构函数: "<<val<<endl;}class Whole: public Part{public: Whole(); Whole(int,int,int,int); ~Whole();private: Part one; Part two; int data;};Whole::Whole(){ data=0; cout<<"调用whole的默认构造函数: "<<data<<endl;}Whole::Whole(int p, int i,int j,int k):Part(p),one(j),two(i),data(k) //问题2{ cout<<"调用whole的构造函数: "<<data<<endl;}Whole::~Whole(){ cout<<"调用whole的析构函数: "<<data<<endl;}void f(){ Whole w1; Whole w2(1,2,3,4);}int main(){ f(); return 0;}
运行结果:
学习心得:
开始自己分析程序的时候,没有注意到part的默认构造函数,还有one,two都是part类的,在运行结果出来之后发现,比我写的多好多,开始不明白为什么有这么多part的默认构造函数,然后单步执行了一下,才有一些些明白,但还不是很清楚。
问题:
将Whole类的构造函数(见注释//问题2)改为下面形式,请解释出现的警告信息。
代码:
#include <iostream>using namespace std;class Part //部件类{public: Part(); Part(int i); ~Part();private: int val;};Part::Part(){ val=0; cout<<"调用Part的默认构造函数:"<<val<<endl;}Part::Part(int i){ val=i; cout<<"调用Part的构造函数: "<<val<<endl;}Part::~Part(){ cout<<"调用Part的析构函数: "<<val<<endl;}class Whole: public Part{public: Whole(); Whole(int,int,int,int); ~Whole();private: Part one; Part two; int data;};Whole::Whole(){ data=0; cout<<"调用whole的默认构造函数: "<<data<<endl;}Whole::Whole(int p, int i,int j,int k):Part(p),two(i),one(j),data(k) //问题2{ cout<<"调用whole的构造函数: "<<data<<endl;}Whole::~Whole(){ cout<<"调用whole的析构函数: "<<data<<endl;}void f(){ Whole w1; Whole w2(1,2,3,4);}int main(){ f(); return 0;}
||=== 生成: Debug in a (compiler: GNU GCC Compiler) ===|
F:\新建文件夹\a\main.cpp||In constructor 'Whole::Whole(int, int, int, int)':|
F:\新建文件夹\a\main.cpp|34|warning: 'Whole::two' will be initialized after [-Wreorder]|
F:\新建文件夹\a\main.cpp|33|warning: 'Part Whole::one' [-Wreorder]|
F:\新建文件夹\a\main.cpp|42|warning: when initialized here [-Wreorder]|
||=== Build finished: 0 error(s), 3 warning(s) (0 minute(s), 3 second(s)) ===|
原因:程序先执行one,在执行two
0 0
- 第十一周阅读程序(4)
- 第十一周阅读程序(4)
- 第十一周 程序阅读(4)
- 第十一周 阅读程序 (4)
- 第十一周 阅读程序(4)
- 第十一周阅读程序(4)
- 第十一周阅读程序(4)
- 第十一周阅读程序4
- 第十周第十一周项目1阅读程序(4)
- 第十周第十一周阅读程序-4
- 第十一周 阅读程序
- 第十一周阅读程序
- 第十一周阅读程序
- 第十一周阅读程序
- 第十一周阅读程序
- 第十一周程序阅读
- 第十一周阅读程序
- 第十一周 课后实践:阅读程序(3)(4)
- Hive 查询优化总结
- Android Studio使用心得 - 常见问题集锦
- PHP中几种常见的超时处理全面总结【转】
- 10个工具让你的 shell 脚本更强大
- 数字出版观察与实践
- 第十一周阅读程序(4)
- 重温 ios发送http GET和POST请求
- windows cmd命令for
- HDU 4133 StrangeStandard 反素数
- CentOS中vsftp安装、配置、卸载
- 使用Maven进行测试
- 显式启动一个service组件
- 关于ios项目目录规范结构探讨
- poj 2446 poj 1469 poj 1274 二分图最大匹配