c++接口定义及实现举例
2013-12-24 19:57
288 查看
c++接口定义及实现举例
2011-05-17 21:46:29| 分类: 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();
}
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;
}
}
到此为止,基本完整演示了接口的定义及实现,有不足之处,请指教。^-^...
相关文章推荐
- 理工大学ACM平台题答案关于C语言 1166 打印直角三角形
- 理工大学ACM平台题答案关于C语言 1159 C语言实验——两个数比较
- c语言的编译过程
- 【转】C++ function、bind以及lamda表达式
- 【学习日记1】c++开始&nbsp;我要做…
- 【学习日记2】c++开始&nbsp;我要做…
- 【学习日记3】c++开始&nbsp;我要做…
- 理工大学ACM平台题答案关于C语言 1145 面向对象程序设计上机练习六(类和对象)
- 理工大学ACM平台题答案关于C语言 1131 C/C++经典程序训练1---最大公约数与最小公倍数
- C++多态的实现与局限性
- C语言实验——求一个3*3矩阵对角线元素之和
- Java基本类型与C++基本类型的一些比较
- websocket c++ example
- 【重温位操作】C++位操作介绍
- C++ Vector 中自定义对象的排序
- 2013级C++第18周——收官来战
- 为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆
- C++内存模型和名称空间
- c++ 命令模式(command)
- C++基础学习笔记(1):C++中的操作符