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;
}
}
到此為止,基本完整演示了介面的定義及實現,有不足之處,請指教。^-^...
相關文章
- 介面的定義和實現
- 設計模式之依賴倒置原則含義及現實舉例設計模式
- 什麼是介面?如何定義介面?如何實現介面?
- 堆的定義、特點及實現
- 一個C++巨集定義與列舉定義重複的編譯錯誤C++編譯
- JTAG各類介面針腳定義及含義
- PHP 單例模式優點意義及如何實現PHP單例模式
- C++中類及類的定義 (轉)C++
- Java 利用列舉實現單例模式Java單例模式
- 透過列舉enum實現單例單例
- 在定義C++, C通用介面函式時讓C++介面支援預設引數C++函式
- C++實現單例模式C++單例模式
- 類定義介面
- Android中常用介面卡及定義自己的介面卡Android
- 介面模組的定義
- Spark UDAF實現舉例 -- average poolingSpark
- C++“隱藏實現,開放介面”的實現方案C++
- 大神教你C++寫時複製實現原理及例項解析C++
- C++巨集定義#defineC++
- C++ 宣告與定義C++
- C++庫封裝JNI介面——實現java呼叫c++C++封裝Java
- 定義SAP登入介面
- 舉例實現對Win9x登錄檔內的鍵值實現開啟、建立、設定、讀取...
- Caffe相關C++介面例項C++
- 設計模式——單例模式C++實現設計模式單例C++
- c++ 層實現binder服務樣例C++
- C++ 前置定義 Forward declarationC++Forward
- 資料結構與演算法——普通樹的定義與C++實現資料結構演算法C++
- 資料結構學習(C++)——棧和佇列(定義和實現) (轉)資料結構C++佇列
- 資料結構學習(C++)——單連結串列(定義與實現) (轉)資料結構C++
- C++ 多型的實現及原理C++多型
- 自定義view之實現日曆介面(一)View
- 自定義view之實現日曆介面(二)View
- 模擬退火演算法舉例及其matlab實現演算法Matlab
- 手寫Spring,定義標記型別Aware介面,實現感知容器物件Spring型別物件
- JSON定義AS專案介面JSON
- mybatis實現變數定義,實現sql業務程式碼MyBatis變數SQL
- Mybatis實現分包定義資料庫MyBatis資料庫