深复制体验(二)
2014-04-10 18:36
197 查看
/* * 程序的版权和版本声明部分 * Copyright (c)2014, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称:a.cpp * 作 者:孔云 * 完成日期:2014年4月10日 * 版 本 号: v1.0 * 输入描述:字符串。 * 问题描述:体验深复制。 * 输出描述:字符串。 */ #include<iostream> #include<cstring> using namespace std; class A { private: char *a; public: A(char *aa) { a = new char[strlen(aa)+1]; //(1)这样处理的意义在于:建立new动态储存空间,可以用delete释放这段空间,节省资源 strcpy(a,aa);//(2)数据成员a与形式参数aa的关系:将aa复制给a,使a获得aa的值。 } A(A &b) { a = new char[strlen(b.a)+1];//建立new动态储存空间并通过实虚传递测出字符串实参的长度 strcpy(a,b.a);//采用引用类的方法,增加复制构造函数 } ~A() { delete []a; //(3)这样处理的意义在于:使用结束立即释放储存空间,增加程序运行效率。 } void output() { cout<<a<<endl; } }; int main() { A a("good morning, code monkeys!" ); a.output(); A b(a); b.output(); return 0; }
心得体会:此程序采用引用类的方法,增加复制构造函数,注意的是:引用类时,虚参的类型为类类型
相关文章推荐
- android-手势解锁
- UDP编程中的connect
- bugzilla使用SMTP发送邮件
- CodeForces 102A
- Linux临时或永久修改DNS
- spring,structs2和Mybatis整合以及单元测试
- Spring声明式事务配置管理方法
- [Solved]CMake can't detect any compiler:The C compiler identification is unknown
- ARM汇编中用宏和子程序实现1+2+。。。+N
- 联想Y470 非虚拟机安装苹果Mac OS X Mavericks 10.9.1教程详解(文字+图片),通俗易懂亲自动手——序列二之镜像写入,引导建立
- 提问的智慧
- pthread 学习笔记
- RDS Migration from 5.5 to 5.6 with mysqldump
- Unity3d赋予角色生命动画状态机动画状态 (Animation State)
- 用UltraEidt修改dmp文件把内容导到指定的表空间
- m2eclipse issues ArtifactTransferException
- 无限极分类php
- Socket通信总结(附C++实现)
- 动态内存分配
- iOS 获取手机所有app信息