• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 我的一个疑惑:com对象的this指针是怎么存储并传递的呢

我的一个疑惑:com对象的this指针是怎么存储并传递的呢

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 我的一个疑惑:com对象的this指针是怎么存储并传递的呢等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 我的一个疑惑:com对象的this指针是怎么存储并传递的呢
描述:

创建一个com组件的对象有多种办法,每种办法得到的都是一个指向获得的特定接口的指针。就向c++的对象一样,每个com组件对象都有自己的一份数据拷贝,但是却共用一份的函数拷贝。因此,对于同一个com组件,创建的每一个对象获得的都应该是指向同一个内存中虚函数表中,那么得到这样的指针以后,我怎么针对特定的对象进行操作呢?或者说,创建一个com对象后,它的this指针放在哪里,我怎么去获得呢?


解决方案1:

补充一点,C++的this问题,建议看一下《C++组件对象模型》,可能有答案

解决方案2:

楼上讲得好长。
我先前说的有错误,我更正一下:
this指针是指向当前类实例的指针,类实例是一群数据成员的集合,其中包括vtbl指针,通过多继承方法得到的类的类实例,包含它所继承的所有接口的vtbl的指针,我们可以使用static_case<IXXX*>把this指针强制转换为指向对应IXXX接口的vtbl的指针的指针(因为vtbl指针是类实例的数据成员,编译器只需调整this指针加上一个适当的偏移量即可指向它)。很显然我们通过this指针强制转换,从而得到了指向vtbl的指针的指针,也就得到了所谓的借口指针。
另外,类的各个实例将共享相同的vtbl(但各自拥有指向它的指针)和函数实现。

解决方案3:

我本来就是说的接口指针是一个接口的指针,只不过这个结构的成员变量只有一个,就是一个指向虚函数表的指针(因为那个结构是个纯虚基类),因此也就是楼主所谓的“指向对象中一个指向虚函数表的指针”

解决方案4:

COM只是一种调用约定,对象不一定是在本进程内,甚至有可能在其它计算机上,其它计算机可以运行不同的操作系统


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 求助:使用MFXC向导生成ActiveX控件事件不能调试
  • 2017-06-05 关于两个线程挂起和恢复的逻辑问题,欢迎各位指教,
  • 2017-06-05 vc2008连接WebService出现异常,希望得到大家帮助,谢谢
  • 2017-06-04 得到另一个进程控件TDrawGrid上的内容
  • 2017-06-04 关于vActiveX中vEdit框中的光标不能移动的问题
  • 2017-06-04 决不惜分,UP有分,如何在ATL里实现系统托盘,真正的挑战哦!
  • 2017-06-05 关于ACTIVEX控件在本地应用程序中注册的问题。。。。。
  • 2017-06-04 activeX如何响应oncreate消息??
  • 2017-06-05 这个写者优先是不是有问题????麻烦看一下,小弟实在看不出错在哪里
  • 2017-06-04 在DEV-CPP中编译建立快捷方式代码出现incompatibletypeforargument1of`CoCreateInstance'

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Web中,vbscript中如何使用Com返回的safearray数组
    • 多个对话框共用一个MSComm控件问题
    • 请帮帮忙!急!
    • 请问斑竹及各位大侠,现在在哪里可以找到这些资料
    • VC使用ODBC连接数据库增加一个字段出现错误
    • 如何用vc程序使word表格中的文字居中?
    • 为何GetCommState失败?
    • 什么是多实例,如何支持多实例?
    • 这样定义一个接口的函数,怎么调用就出错??竞技求救
    • TAB鍵進行控件切換

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有