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;

}

}

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

C++接口通常使用抽象类来定义。抽象类是一种不能实例化的类,其目的是为了让其他类去继承它并实现其纯虚函数。接口定义和使用方法如下: 1. 定义接口抽象类 ```c++ class Interface { public: virtual void foo() = 0; // 纯虚函数,相当于接口方法 virtual int bar(int x, int y) = 0; // 另一个接口方法 virtual ~Interface() {} // 虚析构函数,确保子类正确释放内存 }; ``` 在该抽象类定义了两个纯虚函数,相当于接口方法。纯虚函数没有实现体,必须在子类实现。同时,为了确保子类正确释放内存,接口通常定义一个虚析构函数。 2. 定义实现类 ```c++ class MyClass : public Interface { public: void foo() override { // 实现 foo 方法 } int bar(int x, int y) override { // 实现 bar 方法 return x + y; } }; ``` 可以看到,实现类 `MyClass` 继承了接口抽象类 `Interface`,并实现了其的两个纯虚函数。这样,`MyClass` 类就成为了 `Interface` 接口实现类。 3. 使用接口 ```c++ Interface *ptr = new MyClass(); // 创建实现类对象 ptr->foo(); // 调用接口方法 int result = ptr->bar(1, 2); delete ptr; // 释放内存 ``` 可以看到,使用接口时,先创建一个指向 `Interface` 类型的指针,指向一个 `MyClass` 对象。然后,可以通过该指针调用 `Interface` 接口定义的方法。 需要注意的是,接口的方法都是纯虚函数,必须在子类实现。同时,为了确保子类正确释放内存,接口通常定义一个虚析构函数。在使用接口时,可以通过指向 `Interface` 类型的指针来操作实现类的对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值