智能指针是怎么一回事...

zjlgigi 2005-02-21 09:36:21
rt,好像很复杂
...全文
637 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
RedH 2005-03-03
  • 打赏
  • 举报
回复
就是能在建立时自动初始化,在析构时自动释放所指的内存。是一个包装类,看看<<inside ATL>>前几章有例子。
Wolf0403 2005-02-28
  • 打赏
  • 举报
回复
……汗,当我没说。
Wolf0403 2005-02-28
  • 打赏
  • 举报
回复
回复人: zjlgigi(外星人) ( ) 信誉:100 2005-02-25 16:09:00 得分: 0


听人说好像"智能指针"也有其不完善的地方,
比如在构造函数调用的时候出现异常就不能回收内存 , 是不是 ?


任何类的析构函数都是不能抛出异常的,否则必然产生错误。
Wolf0403 2005-02-28
  • 打赏
  • 举报
回复
最简单的:一个重载了 operator->,部分模拟指针行为的类。
cnepine 2005-02-26
  • 打赏
  • 举报
回复
就是一个类,模拟普通指针的绝大部分功能,其智能的一点就是,如果这个指针被销毁,而它所引用的内存,被其他的智能指针引用,那么它也同时释放那块内存,这样避免了忘记释放内存的情况。

最关键的内存是否泄露,还要看你是不是正确使用了它。

这样你以后的编程就可以放心的使用指针了。
melonliu 2005-02-25
  • 打赏
  • 举报
回复
不知道auto_ptr有多智能,没有用过
Jinhao 2005-02-25
  • 打赏
  • 举报
回复
不会呀,这个可以得到控制的
zjlgigi 2005-02-25
  • 打赏
  • 举报
回复
听人说好像"智能指针"也有其不完善的地方,
比如在构造函数调用的时候出现异常就不能回收内存 , 是不是 ?
sharkhuang 2005-02-23
  • 打赏
  • 举报
回复
堆指针栈化
roy 2005-02-22
  • 打赏
  • 举报
回复
简单的说:
用 NEW 后 不用DELETE了
用法略
yingle2000 2005-02-22
  • 打赏
  • 举报
回复
至于不能使用“++”操作符,那是因为智能指针只允许指向一个对象,而不允许指向一个数组。因为智能指针析构的时候只会调用“delete”操作,而不会调用“delete[]”操作。
如果要使用数组,可以使用动态数组,STL和boost都有提供。
shinull 2005-02-21
  • 打赏
  • 举报
回复
所谓的智能指针(Smart Pointer),按照More Effective C++所述,是行为类似指针(但动作更多)的对象。功能很强大,详细的内容可参考More Effective C++的P47,条款26、28等。具体的参考实现代码在书的附录auto_ptr实现代码
idau7 2005-02-21
  • 打赏
  • 举报
回复
鸡丁说了哦~
Jinhao 2005-02-21
  • 打赏
  • 举报
回复
就是一个类,模拟普通指针的绝大部分功能,其智能的一点就是,如果这个指针被销毁,而它所引用的内存,被其他的智能指针引用,那么它也同时释放那块内存,这样避免了忘记释放内存的情况。

最关键的内存是否泄露,还要看你是不是正确使用了它。
C4_322 2005-02-21
  • 打赏
  • 举报
回复
应该不止有类似“GC”功能吧,还可以指针重定向吧!
zjlgigi 2005-02-21
  • 打赏
  • 举报
回复
那就一定能实现 "内存回收" 了吗 ?
xiyi168 2005-02-21
  • 打赏
  • 举报
回复
一个包装类,同上 :)
晨星 2005-02-21
  • 打赏
  • 举报
回复
不复杂,就是个类,析构时可以自动删除指针。
你自己也可以写一个。
kobefly 2005-02-21
  • 打赏
  • 举报
回复
没用过
ryth 2005-02-21
  • 打赏
  • 举报
回复
就是auto_ptr不用DELETE,很方便,但不是任何情况下都好用.
加载更多回复(7)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧