第9周项目1-深复制体验(1)
来源:互联网 发布:阴阳师辅助软件ios 编辑:程序博客网 时间:2024/05/29 02:42
<pre class="cpp" name="code">#include<iostream>#include<cstring>using namespace std;class A{private: char *a;public: A(char *aa) { a = new char[strlen(aa)+1]; //(a)这样处理的意义在于:_为指针数组分配一个空间避免出现野指针。 strcpy(a, aa); //(b)数据成员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;}
增加复制构造函数后
#include<iostream>#include<cstring>using namespace std;class A{private: char *a;public: A(char *aa) { a = new char[strlen(aa)+1]; //(a)这样处理的意义在于:_为指针数组分配一个空间避免出现野指针。 strcpy(a, aa); //(b)数据成员a与形式参数aa的关系:所占的空间大小是相同的 } A(A &b) { a = new char[strlen(b.a)+1]; strcpy(a,b.a); } ~A() { delete []a; //(c)这样处理的意义在于: 释放出所建立的动态内存节约空间 } void output() { cout<<a<<endl; }};int main(){ A a("good morning, code monkeys!"); a.output(); A b(a); b.output(); return 0;}
学习心得:
在分配指针数组空间的时候要加1是因为还要有字符串结束的结束符,在建立了动态内存后要释放节约空间。如果去掉(a)那么指针*a就成了野指针编译虽然没有错误但是没有被分配地址程序会崩是很危险的。
0 0
- 第9周项目1(1)深复制体验
- 第9周-项目1-深复制体验(1)
- 第9周项目1:深复制体验(1)
- 第9周项目1 深复制体验(1)
- 第9周项目1-深复制体验(1)
- 第9周项目1-深复制体验(1)
- 第9周项目1:深复制体验(1)
- 第9周项目1(2)深复制体验
- 第9周-项目1-深复制体验(2)
- 第9周-项目1-深复制体验(3)
- 第9周项目1:深复制体验(3)
- 第9周项目1 深复制体验(2)
- 第9周项目1-深复制体验(2)
- 第9周项目1:深复制体验(2)
- 第9周项目1- 深复制体验
- 第9周项目1-①深复制体验
- 第6周项目1-深复制体验(1)
- 第5周项目1-体验深复制(3)
- linux+Qt5.6.0_X64 和 Vs2013+Qt5.6.0_X64 同时开发一个项目
- Android开发调用第三方邮件应用发送邮件
- 【模板】素数筛选
- Java---注解、类加载器-加强-实现运行任意目录下class中加了@MyTest的空参方法
- saltstack 远程执行脚本
- 第9周项目1-深复制体验(1)
- 正则表达式
- UVa11107 Lifeform
- iOS上架之内购
- Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED解决方法
- Spark 集群与数据集RDD
- red5源码分析---6
- C++11中的线程同步(简单测试)
- 【SSH网上商城项目实战07】Struts2和Json的整合