第六周项目一 (1)(2) 深复制体验
来源:互联网 发布:js 基础类型 编辑:程序博客网 时间:2024/06/01 07:33
问题及代码:
/** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 文件名称:test.cpp* 作 者:宋健* 完成日期:2015年 4月 14日* 版 本 号:v1.0** 问题描述: 体验深复制* 程序输入:* 程序输出:*/#include<iostream>#include<cstring>using namespace std;class A{private: char *a;public: A(char *aa) { a = new char[strlen(aa)+1]; //(a)这样处理的意义在于:开辟一个比aa指针指向的空间长度多1的空间,为了储存最后的'\0',并且将a指针赋值为这个新空间的地址______________________________ strcpy(a, aa); //(b)数据成员a与形式参数aa的关系:将形式参数aa指向的空间的内容复制给a指向的空间___________________________________ } ~A() { delete []a; //(c)这样处理的意义在于: 将用new建立的空间释放,提高运行效率___________________________________________ } 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为野指针,因为a的数据成员为字符型,需要在内容后加入多加一个'\0'字符,所以字符长度要+1,如果不是字符串,不必+1
0 0
- 第六周项目一(2):深复制体验
- 第六周 项目一(2):深复制体验
- 第六周 项目一-深复制体验(2)
- 第六周 项目一--深复制体验(2)
- 第六周项目一—深复制体验(2)
- 第六周项目一 深复制体验(2)
- 第六周项目一 深复制体验(2)
- 第六周项目一深复制体验(2)
- 第六周项目一(1):深复制体验
- 第六周 项目一(1):深复制体验
- 第六周 项目一-深复制体验(1)
- 第六周项目一—深复制体验(1)
- 第六周 项目一 深复制体验(1)
- 第六周项目一深复制体验(1)
- 第六周 项目一(3):深复制体验
- 第六周项目一深复制体验(3)
- 第六周项目一:深复制体验(二)
- 第六周 项目一-深复制体验(3)
- js Date
- Hibernate Text类型问题 插入修改操作只保存一部分
- mfc 动态导入图像
- nova-network创建实例之FlatManager
- JS 创建对象(常见的几种方法)
- 第六周项目一 (1)(2) 深复制体验
- UI 自定义视图 Label_TextField
- Java之美[从菜鸟到高手演变]之设计模式二
- live555接收实时视频流+ffmpeg解
- 我的第一篇博客
- POJ1423 HDU1018 Big Number【斯特林公式】【高精度】
- 2015年第六周项目二:我的数组类
- Android WebView属性设置
- mfc 自定义消息