游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2259|回复: 8

看书遇到的疑问:没有数据成员的类的实例需要删除吗?

[复制链接]

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2005-10-5 18:25:00 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2005-10-6 13:47:00 | 显示全部楼层

Re:看书遇到的疑问:没有数据成员的类的实例需要删除吗?

自己看design patter这本书吧.

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
 楼主| 发表于 2005-10-6 18:07:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

6

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2005-10-6 18:08:00 | 显示全部楼层

Re:看书遇到的疑问:没有数据成员的类的实例需要删除吗?

要delete
不是还有虚函数指针吗

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2005-10-6 22:26:00 | 显示全部楼层

Re:看书遇到的疑问:没有数据成员的类的实例需要删除吗?

我在看过《设计模式》后也在想一个问题就是为啥他们在程序中总是申请内存,然后就不管了,后来慢慢明白了,其实《设计模式》这不过是告诉你这个或者那个模式是如何工作的,至于你用什么方法去申请和释放内存,则是你的责任。
你所说的关于strategy类的实例的删除问题就跟我上面说的一样,需要你自己想办法,不过那个soilder类的strategy* thestrategy只是一个指针,可以指向任何的以strategy为派生类的实例,所以你的任务是保证删除每次申请内存的那个派生类的指针,而不是删除这个thestrategy指针,《设计模式》为了描述问题方便,才没有加入释放内存的代码。我的解决方法是建立一个动态数组,每个成员都是一个已经分配好的strategy类的派生类的实例,你soilder类需要哪个派生类,就从这个数组中获得即可,但是别忘了最后删除这个动态数组的每个元素就行。

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2005-10-8 09:59:00 | 显示全部楼层

Re: 看书遇到的疑问:没有数据成员的类的实例需要删除吗

只要是你new出来的,则delete是必须的
因为即使class没有任何member,其大小都会有1byte,这是编译器做的事
如果不这样处理,那么class T的2个实例a和b,&a==&b表达式成立
[em16]

3

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
QQ
发表于 2005-10-8 12:14:00 | 显示全部楼层

Re:看书遇到的疑问:没有数据成员的类的实例需要删除吗?

好像没有属性的类,C++ 编译器会默认放一个哑元属性 4 字节的 long

16

主题

266

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
发表于 2005-10-8 13:17:00 | 显示全部楼层

Re:看书遇到的疑问:没有数据成员的类的实例需要删除吗?

没有成员如:
class a
{
};
的实例大小至少是1byte,深度探索C++中有讲到.
有NEW 就必然要用DELETE否则就内存泄漏

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-10-8 13:45:00 | 显示全部楼层

Re:看书遇到的疑问:没有数据成员的类的实例需要删除吗?

需要,会占用字节数的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-28 01:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表