C与C++接口实现比较

本文比较了C和C++在实现接口上的差异。C语言通过结构体和指向函数指针的成员来描述接口,如IDictionary的例子,而C++则使用类和虚函数,实现更简洁。C++的类定义天然符合COM接口规范,且使用纯虚函数表示接口的抽象。客户端调用接口函数时,C++和C的调用方式在效果上是等价的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        但C是利用"structure"或"record"类型,将上包含双重的指向函数指针表的成员,实现接口描述,从而编写COM和使用COM的。如一个字典的接口:  
  struct   IDictionaryVtbl;  
  struct   IDictionary  
  {  
              IDictionaryVtbl   *pVtbl;  
  };  
  struct   IDictionaryVbtl  
  {  
              BOOL(*   Initialize)(IDictionary   *this);  
              BOOL(*   LoadLibrary)(IDictionary   *this,String);  
              BOOL(*   InsertWord)(IDictionary   *this,String,String);  
              BOOL(*   DeleteWord)(IDictionary   *this,String);  
              BOOL(*   LookupWord)(IDictionary   *this,String,String   *);  
              BOOL(*   RestoreLibrary)(IDictionary   *this,String);  
              BOOL(*   FreeLibrary)(IDictionary   *this);  
  };  

说明:(1) 接口函数第一个参数为指向Idictionary的指针;(2)字符串采用UNICODE;(3)尽量采用_stdcall或pascal调用习惯(not -cadcl);(4)只是描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值