请帮我翻译这句话:

黄汉 2002-10-29 08:46:33
The template class describes an object that stores a pointer to an allocated object of type Type* that ensures that the object to which it points gets destroyed automatically when control leaves a block.

这是类auto_ptr的说明,请问这句话是什么意思?关键是“when control leaves a block”这几个。
...全文
23 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaohangcom 2003-02-27
  • 打赏
  • 举报
回复
怎么使用啊
topikachu 2002-11-01
  • 打赏
  • 举报
回复
你把这个理解成"出作用域就可以了"
  • 打赏
  • 举报
回复
同意楼上的
黄汉 2002-10-31
  • 打赏
  • 举报
回复
如果没有人帮我回答,我真的结不了这个帖子了。
merlinran 2002-10-31
  • 打赏
  • 举报
回复
auto_ptr就是一种智能指针,它以一个特定类型的指针为参数创建,当它离开作用域要销毁时,析构函数会把内部存储的指针所指向的对象delete掉,你就不用担心new了一个东西而忘了delete它了。而且,有异常发生时,因为栈展开将释放所有的成员对象,这个auto_ptr也会销毁,就避免了发生异常时指针不能delete的问题。
为了保证不重复析构所指的对象,auto_ptr()的赋值运算符和一般的不同,它会转移所有权,保证任一时刻只有一个auto_ptr拥有对象的所有权,当然,前提是你自己不要破坏这种关系,也就是不要用一个指针去初始化多个auto_ptr,一般的用法是auto_ptr<Object>(new Object),由auto_ptr全权控制Object的生命期。
auto_ptr不支持拷贝语义,所以不能用于container,也不能把它传入一个函数,因为传递后你原来的auto_ptr就没有所有权了。但可以代替普通指针从函数中传回一个new出的对象的指针,因为传递后所有权转移到了返回的auto_ptr这里,而且不用担心delete的问题。
黄汉 2002-10-30
  • 打赏
  • 举报
回复
依照百宝箱的意思,也就是说这个已分配内存的对象是由这个模板类负责析构的吗?我觉得这句话的意思是说:这个模板类确信这个已分配对象的内存狮子东析构的,也就是说模板类不负责任。
jfguo 2002-10-29
  • 打赏
  • 举报
回复
{ }, 之间为一个块
yangkwch 2002-10-29
  • 打赏
  • 举报
回复
我觉得可以理解为在一个对象结束时自动析构所指向的对象,^_^
anrxhzh 2002-10-29
  • 打赏
  • 举报
回复
这个模板类所描述的对象存储了一个类型为Type*的指向一个已分配对象的指针,并且保证在离开一个控制块时自动销毁所指的对象。

24,854

社区成员

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

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