请高手分析一下C++程序

[复制链接]
查看11 | 回复2 | 2010-2-7 23:40:28 | 显示全部楼层 |阅读模式
你的问题就只是“有这个delete []name 和没这个怎么都一样呢还有delete过程是怎样呢 详细一点昂” 吗?感觉这个个比较基楚的问题delete []name ;这个语句写在了析构函数中是在程序结束自动调用析构函数时执行了语句 作用是释放name[]数组在内存中占用的空间然后是该程序结束,释放所有程序占用的资源少了这句话,程序少了“释放name[]数组在内存中占用的空间”自然还是一样结束所以你感觉自然不会有所差别但是最好加上这句话,因为有时这种指针空间不释放会出现一些错误建议楼主再看看C语言的基础知识 我说的只是大概意思,也不是很明白
回复

使用道具 举报

千问 | 2010-2-7 23:40:28 | 显示全部楼层
“~employee() {delete []name;} ” 这句话在这里根本就是错误的!new 和 delete是C++里用来动态分配内存的(内存分配、取消都是程序员自己控制的,而一般变量的生命周期是系统管的,什么时候在内存中没了,程序员不可预知)char name[10]; 这个定义,name就是一个数组,它的对应内存就是系统控制的!想自己控制需要用char* name;分配内存 name = new char[10];释放内存 delete [] name;所以,在这里name的内存不归你控制,你就去delete是错误的
回复

使用道具 举报

千问 | 2010-2-7 23:40:28 | 显示全部楼层
~employee() {delete []name;}这是一个destructor,通常是和constructor配套使用,来释放空间的.constructor是用来初始化私有数据的,格式是 classname(参数){指令}。要注意没有返回类型,连void都没有,名称和class的名字是一样的,在每次定义object的时候自动运行。destructor是在object运行结束时自动运行删除constructor。你的程序里没有constructor,自然~employee() {delete []name;}不会运行,所以没区别。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行