c++接口的定义与封装

可以理解为dll,so,或者单独的类,方便第三方或者其它模块代码使用,借用这个连接

https://www.cnblogs.com/xiaocaocao/p/8451838.html

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;

       }

}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值