问关于auto_ptr和auto_ptr_ref的问题

roy_hu 2002-09-04 09:18:40
1.const auto_ptr不能进行拷贝和赋值操作是因为拷贝构造函数和赋值函数的参数和返回值没有const的缘故吗?
2.auto_ptr_ref的作用就是为了可以给函数传递和从函数返回auto_ptr对象吗?在http://www.josuttis.com/libbook/auto_ptr.html中提到从函数返回时不能直接使用拷贝构造函数because it cannot copy a temporary object,所以要通过与auto_ptr_ref的隐式转换来实现,这是为什么?
...全文
36 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
roy_hu 2002-09-10
  • 打赏
  • 举报
回复
算了,没人来看只好明天给分了
roy_hu 2002-09-08
  • 打赏
  • 举报
回复
to larrin2002():我主要是想弄清楚这个问题,谢谢。

函数需要返回左值是不是在把它直接传给需要引用作参数的函数时?
larrin2002 2002-09-08
  • 打赏
  • 举报
回复
请访问

http://javaptr.cosoft.org.cn

通过JavaPtr,你可以向Java一样使用动态内存,JavaPtr保证当你不需要时,内存立即回收。
使用JavaPtr,你即可以将JavaPtr对象做为参数传递,也可以将JavaPtr做为函数的返回值。

JavaPtr同时提供内存泄漏检测支持。

roy_hu 2002-09-07
  • 打赏
  • 举报
回复
std::auto_ptr<int> foo()
{
std::auto_ptr<int> __ap(new int);
return __ap;//1. ok, auto_ptr can copy const temporary
}
这个函数不能返回左值有关系吗?
语句p=foo();不就可以拷贝过去了?
anrxhzh 2002-09-06
  • 打赏
  • 举报
回复
testing...
anrxhzh 2002-09-05
  • 打赏
  • 举报
回复
请看:http://www.csdn.net/expert/topic/927/927076.xml?temp=.7427179
c_antinomy 2002-09-05
  • 打赏
  • 举报
回复
不返回引用的函数的结果是一个右值,右值不能作为“plain”T&的初始化值,只
能作为const T&的初始化值。一个临时对象是一个右值,比如说函数的非引用返回值。

1.const auto_ptr不能进行copy & assignment是因为它有const属性;
2.auto_ptr_ref的作用主要是类型转换,它把一个右值转换成左值。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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