C++语言接口定义及实现举例
小标 2018-07-20 来源 : 阅读 1326 评论 0

摘要:本文主要向大家介绍了C++语言接口定义及实现举例,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助。

本文主要向大家介绍了C++语言接口定义及实现举例,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助。

一、接口的定义

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

Class IPerson

{

public:

   IPerson() {};

   virtual ~IPerson()=0 {}; //注意,最好定义此虚析构函数,够避免子类不能正常调用析构函数;如果定义为纯虚析构函数,则必须带定义体,因为子类隐含调用该析构函数。

   //提供给外面使用的接口一般采用纯虚函数

   virtual  void SetName(const string &strName)= 0;

   virtual  const string GetName()= 0;

   virtual  void Work()= 0;

}

 

 

二、接口实现

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

Class CTeacher:public IPerson

{

public:

   CTeacher(){};

   virtual ~CTeacher();

   string m_strName;

   void SetName(const string &strName);

   const string GetName();

   void Work();

}

void CTeacher::SetName(const string &strName)

{

    m_strName = name;

}

const string CTeacher::GetName()

{

    return m_strName;

}

void CTeacher::Work()

{

    cout <<"I am teaching!"<<endl;//老师的工作是教书,其他职业的人做的工作是不一样的。

}

 

 

三、接口导出

bool GetIPersonObject(void** _RtObject)
{

   IPerson* pMan = NULL;

   pMan = new CTeacher();

   *_RtObject = (void*)pMan ;

   return true;

}

__declspec(dllexport) bool GetIPersonObject(void** _RtObject);

 

 

四、接口使用

#include "IPerson.h"

#pragma  comment(lib,"IPerson.lib")

bool  __declspec(dllimport)  GetIPersonObject(void** _RtObject);

 

/* 测试例子 */

void main()

{

       IPerson *    _IPersonObj = NULL;

   void*      pObj=NULL;

       if (GetIPersonObject(&pObj))       

        {

            // 获取对象

           _IPersonObj = (IPerson *)pObj;

            // 调用接口,执行操作

            _IPersonObj ->SetName("Tom");

             string strName = _IPersonObj->GetName;

           _IPersonObj->work();

       }

       if (_IPersonObj !=NULL)

       {

           Delete _IPersonObj ;

           _IPersonObj  = NULL;

       }

}

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

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程