第九周实践1-阅读程序,写出程序运行结果并理解 (2)
2016-04-27 17:21
459 查看
运行结果:
阅读想法:
主函数里面定义一个MyClass类的对象*p[];for循环里给*p[]动态分配内存并执行了3次构造函数每次分别输出C0,C1,C2;另*p[]指向SetValue函数,函数的实参是GetVal()*2;在for循环里同样执行三次,三次的值依次为:0,1,2;所以p[i]也就是SetValue里面的值依次:0,2,4;执行完函数后再进入for循环释放掉*p[]的内存,也就是依次析构函数MyClass,所以依次输出的值是D0,D1,D2。
#include <iostream> using namespace std; class MyClass { public: MyClass(int x=0):i(x){cout<<"C"<<i;} ~MyClass(){cout<<"D"<<i;} void SetValue(int val){i=val;} int GetVal(){return i;} private: int i; }; int main() { MyClass *p[3]; int i; for (i=0;i<3;i++) { p[i]=new MyClass(i); p[i]->SetValue(p[i]->GetVal()*2); } for (i=0; i<3; i++) delete p[i]; cout<<endl; return 0; }
运行结果:
阅读想法:
主函数里面定义一个MyClass类的对象*p[];for循环里给*p[]动态分配内存并执行了3次构造函数每次分别输出C0,C1,C2;另*p[]指向SetValue函数,函数的实参是GetVal()*2;在for循环里同样执行三次,三次的值依次为:0,1,2;所以p[i]也就是SetValue里面的值依次:0,2,4;执行完函数后再进入for循环释放掉*p[]的内存,也就是依次析构函数MyClass,所以依次输出的值是D0,D1,D2。
相关文章推荐
- IntelliJ IDEA 15在线激活码(破解)--License server 15.0.2本人亲测
- c++作业4
- 【BZOJ 2648】SJY摆棋子 & 【BZOJ 2716】【Violet 3】天使玩偶
- mongoDB 使用手册
- Leetcode 344 Reverse String
- Cordova - 常用的插件汇总(附插件的安装、查询、更新、删除等命令)
- namespaces之 User Namespace机制
- C#进阶系列——AOP?AOP!
- 一种更新yum源的简便方法
- 团队冲刺--第二天
- Scala
- spring boot 使用application.properties 进行外部配置
- Window下 Qt Creator 安装+Qt4.8.5+MinGW编译器+GDB调试器
- 优化Mysql数据库的8个方法
- 【原】Eclipse部署Maven web项目到tomcat服务器时,没有将lib下的jar复制过去的解决办法
- 死锁
- [置顶] 基于.NET平台常用的框架整理
- HDU 2521 反素数
- CSS教程:div垂直居中的N种方法以及多行文本垂直居中的方法
- JSP学习笔记