第六周项目一 深复制体验(2)
2015-04-15 09:07
176 查看
问题及代码
ALL rights reserved.
*文件名称: 初学对象6
作者:李长鸿
*完成时间:2015.4.15
*问题描述: 阅读程序
*/
总结:
将注释(a)所在的那一行去掉,会出现什么现象?
为什么?
答:a变成了野指针,找不到地址,无法做访问;
为什么a数据成员所占用的存储空间要在aa长度基础上加1?
答:因为数组存储末尾都有个 '\0',占了一个长度;
若指针a不是指向字符(即不作为字符串的地址),是否有必要加1?
答:应该是只要指向数组就需要加1,指向其他单个的数据不用加1吧;
ALL rights reserved.
*文件名称: 初学对象6
作者:李长鸿
*完成时间:2015.4.15
*问题描述: 阅读程序
*/
#include<iostream> #include<cstring> using namespace std; class A { private: char *a; public: A(char *aa) { a = new char[strlen(aa)+1];//(a)这样处理的意义在于:给数组a分配了一段空间,使它名花有主,不做孤魂野鬼找不到家; strcpy(a, aa); //(b)数据成员a与形式参数aa的关系:a赋值为aa,相等关系; } ~A() { delete []a; //(c)这样处理的意义在于: 及时撤销空间,早投胎,不浪费; } void output() { cout<<a<<endl; } }; int main(){ A a("good morning, code monkeys!"); a.output(); A b("good afternoon, codes!"); b.output(); return 0; }
总结:
将注释(a)所在的那一行去掉,会出现什么现象?
为什么?
答:a变成了野指针,找不到地址,无法做访问;
为什么a数据成员所占用的存储空间要在aa长度基础上加1?
答:因为数组存储末尾都有个 '\0',占了一个长度;
若指针a不是指向字符(即不作为字符串的地址),是否有必要加1?
答:应该是只要指向数组就需要加1,指向其他单个的数据不用加1吧;
相关文章推荐
- 第六周 项目一-深复制体验(2)
- 第六周 项目一 深复制体验3
- 第六周项目一深复制体验(2)
- 第六周 项目一-深复制体验(1)
- 第六周项目1-深复制体验(3-复制构造函数)
- 第六周 项目1 深复制体验
- 第六周项目一深复制体验(3)
- 第六周项目一 深复制体验1
- 第六周项目1-2:深复制体验
- 第六周项目一 深复制体验(3)
- 第六周——项目一深复制体验(一)
- 第六周 项目一-深复制体验(3)
- 第六周 项目一--深复制体验(1)
- 第六周项目一 (1)(2) 深复制体验
- 第六周项目一:-深复制体验
- 第六周 项目一--深复制体验(2)
- 第六周【项目1-深复制体验】1
- 第六周【项目1-深复制体验】2
- 第六周 项目一 深复制体验
- 第六周项目一深复制体验