COM中的对象与C++中的对象

STM32H7原生PCAN-USB Pro驱动系统:CAN FD+μs级时间戳+Windows WDF全栈实现 PCAN-USB Pro是一种面向车载诊断与工业通信的高精度CAN/CAN FD接口设备,其核心在于符合PEAK协议规范的USB设备描述符、Windows内核级WDF驱动支持及硬件时间戳机制。理解USB CDC ACM与HID双模协议栈协同原理,是实现PCAN-View自动识别的关键;掌握CAN FD控制器时钟配置与TSR预分频技术,则直接决定时间戳精度能否达到±125ns。该方案突破传统虚拟串口局限,提供从STM32固件、INF安装包、签名绕过到python-can兼容测试的完整工程链路,适用于ECU刷写 阅读详情
COM中的对象与C++中的对象 作者:楼国富 发布时间:2001/02/07
 
文章摘要:
  学COM技术也有一段时间了,总觉得COM中的有些概念比较难,比如说对象这个概念就与C++中的对象概念大有不同,本文对此进行简单剖析,供初学者参考。
       

正文: 


COM中的对象与C++中的对象  

  学COM技术也有一段时间了,总觉得COM中的有些概念比较难,比如说对象这个概念就与C++中的对象概念大有不同,现简单剖析如下,供初学者参考。
  一般来说,COM/DCOM中的对象我们称之为Windows对象,它之所以与C++对象不同,主要原因是在C++中,我们仅能使用在自己的应用程序(EXE)中或是在DLL中存在和执行C++对象。而另一方面,使用Windows对象时可以不考虑其存在和执行的地方,可以是在自己的EXE中,也可以是在DLL中,可以是在本机中,也可以是在网络中的任意一台主机上。因此Windows拥有更强的功能。Windows对象与C++对象之间影响编程实现的几个关键不同点有以下几个方面:
  · 对象类的定义。
  · 对象的实例化。
  · 对象的引用。
  · 对象的毁灭。

对象类的定义

  C++中我们使用class这个关键字来定义类,也就是生成了一个用户自定义类型。成员数据和成员函数可以是private,protected以及public,而且C++类可以继承另一个类和被另一个类继承,它可获取基类的所有特性(数据和成员函数),并具有超越和扩展基类选择项的能力。而Windows对象是通过其所支持的接口的形式来定义的。所有Windows对象必须支持一个称为IUnknown的接口。一个对象只有支持此接口才能称之为Windows对象,对象用户通过IUnknown的成员函数了得知对象所支持的其它接口。

对象的实例化

  C++对象可通过多种途径来实例化,如声明一个在堆栈上的对象类型的变量,声明一个全程变量,或对该类型使用new运算符。但无论实际采用哪种技术,C++最终都要调用对象的构造函数。
  同样,实例化Windows对象的方法也有多种。在某些情况下,可调用某个函数来实例对象,而在另外一些情况下,不能直接实例对象,但可以得到一个指向已创建一些其他内容的对象的指针。这里介绍一种最常见的技术,即通过一个称为Class Factory Object(类工厂对象)的工具来实例Windows对象,很像new算符对C++对象所做的那样,一个类工厂对象代表了一个特定类别的标示符,是通过一个特定的OLE2或COM/DCOM功能来获得的,并且支持一个名为IclassFactory的接口。IclassFactory接口包含一个名为CreateInstance的成员函数,可向它传递一个在对象上的我们想要的接口的标示符。IclassFactory::CreateInstance与new在逻辑上是相等的。

对象的引用

  C++对象可以通过对象变量,对象引用(C++中一个特定类型),或指向的指针被引用。由于对象通常是在本地的(在用户的EXE或DLL中),其实例可存在与进程空间的任何地方。通过任何变量,在用户和对象是朋友的情况下,用户具有对对象中任何公共的、专有的或被保护的成员的访问权。但是Windows对象通常通过一接口指针而不是对象本身的指针被引用的。这意味着通过一个已有的接口指针,用户只能访问在该接口中的成员函数。用户永远不能得到一个指向完整对象的指针(因为没有关于完整对象的定义),因此不存在对数据员的访问权,也不存在"友员"的概念。
  通过IUnknown接口,用户可以到达该对象所支持的另外接口,但这意味着获得了同一对象的不同指针。每个接口指针指向对象中的函数表,而每个函数表仅包含某个特定接口的成员函数。
  当拥有对象的接口指针时,可以调用接口的成员函数,就如同可以通过指针来调用C++对象的成员函数一样:
pISomeInterface->MemberFunction([parameters]);

对象的毁灭

  在C++中,可通过在一个对象指针上调用delete删除操作来消除通过new创建的对象。以堆栈变量出现的对象只要在从一个函数返回前重置堆栈即可被自动释放。上述两种情况中,对象所占用的存储器均被释放,对象的析构函数即被调用了。
  然而释放Windows对象并调用其析构函数的函数是一个称为Release的成员函数,该函数是IUnknown中的一员,所以它存在于Windows对象的每个接口中。Release不象delete操作符那样粗暴。它涉及到有关"引用计数"的概念,当调用Release时,对象可能并未真正删除。在内部,对象维护一个关于在其任一接口中存在多少引用的计数。创建一个接口指针就增加一个引用计数,而Release使其计数减少。当计数减少到零时,对象就释放其本身,调用其自己的消除功能。

C++ com对象实例 使用单接口COM对象 第一个例子展示的是单接口COM对象。这可能是你碰到得最简单的例子。它使用外壳中的活动桌面组件对象类(CLSID_ActiveDesktop)来获得当前桌面墙纸的文件名。 第二个例子展示了如何使用一个提供单接口的COM对象QueryInterface()函数。其中的代码用外壳的Shell Link组件对象类创建我们在第一个例子中获得的墙纸文件的快捷方式 。 使用单接口COM对象 立即下载

相关推荐

使用MFC和晚绑定创建COM对象

c++开发COM源程序,使用MFC和晚绑定创建COM对象

COM对象与C++对象的区别

 ATL(ActiveTemplate Library,活动模板库)是微软开发的一套 COM(ComponentObject Model,组件对象模型)支持库。通常,脱离所支持的对象而讨论类库意义不大,我就写一篇简单的文章介绍一下,对于想学COM的人来说,也是一块敲门砖,只是希望别用来砸我。(鉴于这个坛子上大家都对C++ 很熟悉,所以我会拿 C++ 和 COM做很多

百里鹤的专栏 2508

C#如何调用原生C++ COM对象详解

主要给大家介绍了C#如何调用原生C++ COM对象,在C++中实现C#的接口。文中通过示例代码介绍的很详细,相信对大家的理解和学习会有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。

COM中的对象与C++中的对象 (转)

COM中的对象与C++中的对象 (转)[@more@]COM中的对象与C++中的对象 作者:楼国富 发布时间:2001/02/07 文章摘要:   学COM技术也有一段时间了,总觉得COM中的有些概念比较难,比如说对象这个概...

csd3176的博客 245

ArcGIS 泛克里金插值

按照如图所示的步骤填写参数,1处选择subset features。 2:输入数据。 3:输出训练数据。 4:输出测试数据。 5:80,表示80%的比例是训练数据,20%是测试数据。 6:输入的百分比。 1:选择geostatistical wizard。 2:插值方法,克里金插值 3:训练数据。 4:数据字段。 点击下一步: 1:表示泛克里金插值。 2:输出表面类型。 3:转换类型none。 4:趋势剔除的阶数。 点击下一步: 表示东北—西南方向变化平缓。 1:模型优化 2:模型类型(stabl.

yuanYW7556的博客 7274

ShardingSphere分库分表教程,java后端开发面试题

???? 简介:Java领域优质创作者????、优快云哪吒公众号作者✌ 、Java架构师奋斗者???? ???? 扫描主页左侧二维码,加入群聊,一起学习、一起进步 ???? 欢迎点赞 ???? 收藏 ⭐留言 ???? 目录 一、分库分表 二、分库分表的方式 1、垂直分表 2、垂直分库 3、水平分表 4、水平分库 三、分库分表带来的问题 1、学习成本问题 2、事务问题 3、跨节点join问题 4、跨节点的count、order by、group by以及聚合函数问题 5、数据迁移、容量规划、扩

m0_64205716的博客 3015

【COM编程】从C++到COM,学习笔记,转自网络,对于理解COM原理学习很好!

COM的产生   一. 为什么要引入COM? 先给一个答案:COM的产生是为了解决OLE技术。当然今天OLE已经变成了COM的一个成功应用例,就好比牛顿当初发明微积分是为了解决物理运动问题,但是今天物理运动问题只是微积分的一个应用而已——以上不是我瞎猜的,是那本Inside

netanimals的专栏 1万+

Windows 下安装 ros2 的超详细教程

Windows11 ROS安装

2401_83363439的博客 3317

COM组件的接口和对象

一、 前言 在COM规范中,最基本的两个要素就是对象与接口,因为COM就是由这两者来共同实现的。COM对象在组件中是被封装起来的,客户代码只能通过接口来访问COM对象并享受其服务,由于客户与COM直接打交道的是COM接口,所以COM接口是COM最关键的要素。COM规范的核心内容就是对接口的定义,甚至可以说“在COM中接口就是一切”。组件与组件之间、组件与客户之间都要通过接口进行交互。接口成员函数

u010523811的博客 1万+

原形网络(Prototypical Networks)基于PyTorch的实现

我在Jay2coomzz的基础上修改了数据处理方式和evaluation_model()方法,作为初学者若有不当之处恳请大家批评指正,原文链接如下: https://blog.youkuaiyun.com/weixin_38471579/article/details/102631018 数据集和源码链接将放到评论区 文章目录1 数据集一个简单的数据集介绍数据集处理2 搭建网络CNNProtonets 1 数据集 一个简单的数据集介绍 Omniglot数据集一共包含1623 类手写体,每一类中包含20 个样本。其中.

weixin_43872532的博客 6636

【YOLOv8-pose姿态识别部署至RK3588:模型训练到RKNN落地,让人体姿态分析精度与边缘推理速度双突破】

本教程从YOLOv8-pose模型的姿态识别训练,到RK3588的边缘量化部署,为你打造了一套“高精度+高实时性+低成本”的人体姿态分析解决方案。无论是健身动作纠正、智能安防行为检测,还是工业人员姿态监控,这套技术都能直接复用——你只需替换数据集与业务逻辑,即可快速落地专属的边缘AI姿态识别系统。如果你在实践中遇到任何卡点,欢迎随时交流。记住,人体姿态识别的价值在于“关键点准、推理快、部署易”,而这三者的平衡,正是你通过本教程能掌握的核心能力。

FJN110的博客 328

一句话 COM - 给 C++ 程序员的 COM 入门指南

执笔: polyrandom   http://www.allaboutprogram.com 开了一个新的版面:类库讨论,希望能够对流行的类库进行探讨,不仅可以从中获得使用经验,也可以为自己今后设计类库指明方向。ATL(Active Template Library,活动模板库) 也是这个版面讨论的对象之一,它是微软开发的一套 COM(Component Object Model,组件对象模型)

blog 2066

肖特基二极管的反向恢复过程

本博客简述肖特基二极管反向恢复过程。

记得诚 1万+

c++mfc如何实现写毛笔字_COM编程入门Part 什么是COM和如何使用COM [译]

本篇文章为翻译文章,适合像我一样,之前从来没有接触过COM编程的人,如果翻译的有什么不足之处,希望大家多多指出。原文链接:https://www.codeproject.com/Articles/633/Introduction-to-COM-What-It-Is-and-How-to-Use-It以下为译文部分:这是一篇面向COM编程新手程序员的教程,解释了COM服务器的内部原理,以及...

weixin_39775910的博客 247

KUKA机器人修改机器人名称和IP地址的具体方法示例

KUKA机器人修改机器人名称和IP地址的具体方法示例

Robot_PLC_HMI_Automation 5258

【01】总目录——软件设计师50讲通关地图|从零基础到工程师职称

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏的01篇总目录,系统梳理了50篇博文的完整架构与核心逻辑。专栏覆盖软考软件设计师(中级)全部考点,分为导学规划、基础知识、设计模式、下午题专项、算法实战、冲刺模拟、收官进阶七大模块,既兼顾上午题75道单选题的理论攻坚,也聚焦下午题案例分析的解题能力提升。每篇博文均包含考点精讲、真题解析、实战技巧与速记方法,配套可运行代码、解题模板及备考资源。无论你是零基础转行、在校学生还是在职程序员,都能通过这份学习地图明确进度、精准定位薄弱环节,高效搭建知识体系

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1278

摸爬滚打DirectX11_day03——关于COM接口对象的一些介绍

目前Windows平台下的开发,主要是以C++与COM接口配DirectX为主要方案。COM(Component Object Model,组件对象模型)是一项能够使DirectX独立于编程语言并向下兼容的技术。我们常称COM对象为接口,可将其视为一个C++的类来使用。在以C++语言和COM接口方式开发的DirectX应用程序中,可以直接访问COM接口和对象。COM接口对象说白了就是一组具有特定功能

fruit的博客 823

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

AutoHotkey与Smalltalk交互:面向对象集成

在现代软件开发中,不同编程语言之间的集成变得越来越重要。AutoHotkey作为一种强大的自动化脚本语言,与Smalltalk这种经典的面向对象编程语言的结合,可以为开发者带来更灵活的解决方案。本文将详细介绍如何实现AutoHotkey与Smalltalk之间的面向对象集成,包括COM(Component Object Model,组件对象模型)接口的使用、事件处理以及实际应用案例。 ## 技术...

gitblog_01052的博客 276

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VC++ 的MFC 和ATL 及COM 是什么?

一、什么是MFC         微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个输助软件开发包,MFC作为与VC++血肉相连的部分(注...

weixin_34061042的博客 132

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

COM原理笔记

COM 原理笔记之一 —— 概述篇 COM (组件对象模型, Compent Object Model )是 Microsoft 提出来的组件标准,它不仅定义了组件程序之间进行交互的标准,并且也提供了组件程序进行所需要的环境。 一、两种进程模型: 进程内组件:以动态链接库的形式出现( .dll ); 进程外组件:以可执行程序的形式出现( ....

weixin_33812433的博客 96

学习COM组件编程

面向对象的思想难以适应这种分布式软件模型,于是组件化程序设计思想得到了迅速的发展。 按照组件化的程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块可以运行在同一台机器上,也可以运行在不同的机器上。 为了实现这样的应用软件,组建程序和组建程序之间需要一些极为细致的规范, 只有组件程序遵守了这些共同的规范,然间系统才能正常运行。 为此,OMG和Micro

下雨天__的专栏 971

OLE技术专题——COM连接点事件(下)

Understanding COM Event HandlingBy Lim Bio Liong Change of Article TitlePlease note that I have changed the title of this article from "TEventHandler - A C++ COM Event Handler For IDispatch-Based Even

feijj2002_的专栏 3347

简单谈谈组件及COM---转载

        转眼间,在编程道路上的行走已经快一年了,心里突然觉得有许多话想拿出来与大家分享一下.我觉得我的路走得很不一般,首先我是学无线电出身的.与编程有点接触,但并不是看家本领.好闲话少述,我们进入正题吧,不然斑竹要删帖了,我的话题是属于C++,希望我没走错屋子,作为我在这个坛子里的第一帖,我想谈谈我对组件的一些看法.  简而言之,组件就是对象。C++中没有组件的概念,但它可以做出各种各样的

lzy专栏 617

分布式组件对象模型DCOM揭秘

以下是本指南的目录:  COM的基本要素--要学好它,就从这里开始吧  简单的COM客户--介绍简单的COM客户  简单的COM服务器--使用ATL向导来建立一个服务器  下载工程文件  *****下载BeepClient工程文件(9KB)  *****下载BeepServer工程文件(17KB)  COM的基本要素  首先要弄懂COM是怎样工作的。为什么这个工作是首要的呢?因为COM使用它自己专

我的生活,我的BLOG 1447

C++ 面向对象(类&对象)

C++ 面向对象(类&对象) 转载于:https://www.cnblogs.com/guozepingboke/p/10823025.html

weixin_30236595的博客 116
上一篇: Unicode vs Ansi
下一篇: Oracle9i的管理方面的一些新特性
CandyCat
博客等级 码龄26年 23粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值