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();


}


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;


}


}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值