c++介面定義及實現舉例
轉自:http://yinzhezq.blog.163.com/blog/static/164862890201141794629207/
一、介面的定義
有時候,我們得提供一些介面給別人使用。介面的作用,就是提供一個與其他系統互動的方法。其他系統無需瞭解你內部細節,並且也無法瞭解內部細節,只能通過你提供給外部的介面來與你進行通訊。根據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;
}
}
到此為止,基本完整演示了介面的定義及實現,有不足之處,請指教。^-^...
相關文章
- 介面的定義和實現
- 什麼是介面?如何定義介面?如何實現介面?
- 堆的定義、特點及實現
- JTAG各類介面針腳定義及含義
- 執行緒池的實現原始碼及應用舉例執行緒原始碼
- Spark UDAF實現舉例 -- average poolingSpark
- PHP 單例模式優點意義及如何實現PHP單例模式
- 單例模式c++實現單例模式C++
- Java 利用列舉實現單例模式Java單例模式
- 在定義C++, C通用介面函式時讓C++介面支援預設引數C++函式
- 類定義介面
- 舉例說明js如何實現繼承?JS繼承
- 大神教你C++寫時複製實現原理及例項解析C++
- C++庫封裝JNI介面——實現java呼叫c++C++封裝Java
- 舉例說明如何實現瀏覽器桌面通知?瀏覽器
- Python的類及單例實現Python單例
- 介面模組的定義
- C++定時器CTimer的實現C++定時器
- C++ 前置定義 Forward declarationC++Forward
- 手寫Spring,定義標記型別Aware介面,實現感知容器物件Spring型別物件
- C++ std::call_once 實現單例模式C++單例模式
- C++ 多型的實現及原理C++多型
- C++ 定義靜態成員 static 關鍵字不能在定義出重複出現C++
- Verilog設計技巧例項及實現
- ts類介面約束定義
- C++學習 類定義(一)C++
- Mybatis實現分包定義資料庫MyBatis資料庫
- MongoDB Sharding Balancer介紹和設定方法舉例MongoDB
- JMeter定時器種類+詳細教程舉例JMeter定時器
- Go 語言介面及使用介面實現連結串列插入Go
- mybatis實現變數定義,實現sql業務程式碼MyBatis變數SQL
- 如何實現 axios 的自定義介面卡 adapteriOSAPT
- C#動態建立介面的實現例項物件C#物件
- C++中巨集定義#define的用法C++
- c++繼承,隱藏(重定義)C++繼承
- 簡單理解JSONP的定義及其實現JSON
- DIY 實現 ThinkPHP 核心框架(七)定義框架PHP框架
- 《甘十九妹》 ent 實現之 Schema 定義
- 自定義註解例項實現SQL語句生成SQL