博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++接口定义及实现举例
阅读量:4327 次
发布时间:2019-06-06

本文共 2090 字,大约阅读时间需要 6 分钟。

一、接口的定义

    有时候,我们得提供一些接口给别人使用。接口的作用,就是提供一个与其他系统交互的方法。其他系统无需了解你内部细节,并且也无法了解内部细节,只能通过你提供给外部的接口来与你进行通信。根据c++的特点,我们可以采用纯虚函数的方式来实现。这样做的好处是能够实现封装和多态。现举一实例,供大家参考。(不想做过多说明,大家一看就应该能够明白)

1 Class IPerson 2  3 { 4  5 public: 6  7    IPerson() {}; 8  9    virtual ~IPerson()=0 {}; //注意,最好定义此虚析构函数,够避免子类不能正常调用析构函数;如果定义为纯虚析构函数,则必须带定义体,因为子类隐含调用该析构函数。10 11    //提供给外面使用的接口一般采用纯虚函数12 13    virtual  void SetName(const string &strName)= 0;14 15    virtual  const string GetName()= 0;16 17    virtual  void Work()= 0;18 19 }

 

 

 

二、接口实现

   实现接口是通过继承接口的子类来实现的,不同的子类可以实现不同效果,即使所谓多态。

1 Class CTeacher:public IPerson 2  3 { 4  5 public: 6  7    CTeacher(){}; 8  9    virtual ~CTeacher();10 11    string m_strName;12 13    void SetName(const string &strName);14 15    const string GetName();16 17    void Work();18 19 }20 21 void CTeacher::SetName(const string &strName)22 23 {24 25     m_strName = name;26 27 } 28 29 const string CTeacher::GetName()30 31 {32 33     return m_strName;34 35 }36 37 void CTeacher::Work()38 39 {40 41     cout <<"I am teaching!"<

 

 

 

三、接口导出

1 bool GetIPersonObject(void** _RtObject) 2 { 3  4    IPerson* pMan = NULL; 5  6    pMan = new CTeacher(); 7  8    *_RtObject = (void*)pMan ; 9 10    return true;11 12 } 13 14 __declspec(dllexport) bool GetIPersonObject(void** _RtObject);

 

 

 

四、接口使用 

1 #include "IPerson.h" 2  3 #pragma  comment(lib,"IPerson.lib") 4  5 bool  __declspec(dllimport)  GetIPersonObject(void** _RtObject); 6  7   8  9 /* 测试例子 */10 11 void main()12 13 {14 15        IPerson *    _IPersonObj = NULL;16 17    void*      pObj=NULL;18 19        if (GetIPersonObject(&pObj))        20 21         {22 23             // 获取对象24 25            _IPersonObj = (IPerson *)pObj;26 27             // 调用接口,执行操作28 29             _IPersonObj ->SetName("Tom");30 31              string strName = _IPersonObj->GetName;32 33            _IPersonObj->work();34 35        }36 37        if (_IPersonObj !=NULL)38 39        {40 41            Delete _IPersonObj ;42 43            _IPersonObj  = NULL;44 45        }46 47 }

到此为止,基本完整演示了接口的定义及实现,有不足之处,请指教。^-^...

转载于:https://www.cnblogs.com/xiaocaocao/p/8451838.html

你可能感兴趣的文章
P3384 【模板】树链剖分
查看>>
Thrift源码分析(二)-- 协议和编解码
查看>>
考勤系统之计算工作小时数
查看>>
4.1 分解条件式
查看>>
Equivalent Strings
查看>>
flume handler
查看>>
收藏其他博客园主写的代码,学习加自用。先表示感谢!!!
查看>>
H5 表单标签
查看>>
su 与 su - 区别
查看>>
C语言编程-9_4 字符统计
查看>>
在webconfig中写好连接后,在程序中如何调用?
查看>>
限制用户不能删除SharePoint列表中的条目(项目)
查看>>
【Linux网络编程】使用GDB调试程序
查看>>
feign调用spring clound eureka 注册中心服务
查看>>
ZT:Linux上安装JDK,最准确
查看>>
LimeJS指南3
查看>>
关于C++ const成员的一些细节
查看>>
《代码大全》学习摘要(五)软件构建中的设计(下)
查看>>
C#检测驱动是否安装的问题
查看>>
web-4. 装饰页面的图像
查看>>