请问,ATL中,属性的put和put_ref有什么区别?

Python 2001-11-10 01:35:04
...全文
112 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Python 2001-12-12
  • 打赏
  • 举报
回复
thanx
luxyi 2001-12-06
  • 打赏
  • 举报
回复
CComPtr是一个smart pointer,在进行赋值时会隐含调用AddRef,你可以看一下源代码。

这个ref是指对象,对于Picture来说,就是这个Picture对象,而不是指针的reference。通过代码可以看出putref_Picture是的组件内的m_pPicture和客户端传入的pPicture指向同一Picture对象,而put_Picture会根据以有的Picture对象新创建一个与之相同的Picture对象(OleLoadPicture),这样m_pPicture使用的是新的Picture对象,而pPicture使用的还是老的对象。
arxing 2001-12-03
  • 打赏
  • 举报
回复
要自己自己加。
假如客户是VB,它会当作你加了的,如果你没有加,那调用时就会出现问题。
Python 2001-11-16
  • 打赏
  • 举报
回复
可是,为什么ATL源代码中的Picture对象的put_ref里,就没有进行AddRef调用?
arxing 2001-11-12
  • 打赏
  • 举报
回复
你自己加引用啊,idl声明的东西,只是让不同平台的人看到的,也就是说它只是一个协议,是你要按照它的协议怎么做,而不是协议帮你做了什么。
Python 2001-11-11
  • 打赏
  • 举报
回复
如果我想设置一个Picture型的属性,在put_ref中是否还需要调用传入的Picture对象的AddRef呢?我看ATL中的代码,没有进行调用,只是简单的指针赋值,如果这样的话,外面传入的Picture对象删除了怎么办呢?
wyzegg 2001-11-10
  • 打赏
  • 举报
回复
The propputref attribute specifies a property-setting function that uses a reference instead of a value.

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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