请教一个关于折构函数的问题,很急,救命!

Loverlygirl 2004-05-06 04:21:05
class A
{
public:
~A();
//....
private:
list<char *p> b;
//....
}

请针对以上类,写一个合适的折构函数。
谢谢各位大虾啦!
...全文
21 10 点赞 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
eintain 2004-05-06
同意freefalcon(心宇)的方案
  • 打赏
  • 举报
回复
MyNameEPC 2004-05-06
你没有说清楚list里的指针的来源,是new、栈、还是malloc()出来的,抑或其它手法出来的。如果是new出来的,那么可以用delete,否则就不行,同样malloc()要用free(),如果是栈上出来的,那么你不知道这个地址的内存何时被释放,如果地址指向的栈的变量被释放了,那么就是指向错误内存地址了。现在问题是你现在无法知道内存是如何被分配的,所以无法使用上述大家的方法。所以STL都是调用拷贝构造函数或者operator=重载的。因此我建议你先了解自己的需求,然后想出解决方案。
  • 打赏
  • 举报
回复
MangDang 2004-05-06
A::~A()
{
std::list<char*>::iterator iter = b.begin();
while(iter != b.end())
{
delete *iter;
iter++;
}
b.clear();
}
  • 打赏
  • 举报
回复
jbheidong1981 2004-05-06
小心你的指针会乱窜的
  • 打赏
  • 举报
回复
Wolf0403 2004-05-06
一个 new 对应一个 delete,所以析构函数中不需要任何操作。
  • 打赏
  • 举报
回复
freefalcon 2004-05-06
慢慢来吧
容器类使用指针作为存储对象时,对内存的管理要麻烦一些,可以考虑鸡丁的做法

STL是很庞大,一步一步来吧
  • 打赏
  • 举报
回复
Jinhao 2004-05-06
建议用
class A
{
public:
~A();
//....
private:
list<string> b;
//....
}
  • 打赏
  • 举报
回复
kfangx 2004-05-06
stl中学习分两个层次:
1)原理理论,主要包含functor(仿函数),iterator(迭代器),contain(容器),algorithm(算法)
2)使用技巧,比如:能使用容器中自带的函数就使用容器中的,不要使用标准算法
  • 打赏
  • 举报
回复
Loverlygirl 2004-05-06
我刚学习STL,有很多部知道的地方,我也不知道对不对, freefalcon(心宇) 兄台可以解释一下吗?
  • 打赏
  • 举报
回复
freefalcon 2004-05-06
这样行么?
A::~A()
{
A::iterator iter = b.begin();
while(iter != b.end())
{
delete *iter;
iter++;
}
}
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2004-05-06 04:21
社区公告
暂无公告