C++接口定義及實現舉例


一、接口的定義

    有時候,我們得提供一些接口給別人使用。接口的作用,就是提供一個與其他系統交互的方法。其他系統無需了解你內部細節,並且也無法了解內部細節,只能通過你提供給外部的接口來與你進行通信。根據c++的特點,我們可以采用純虛函數的方式來實現。這樣做的好處是能夠實現封裝和多態。現舉一實例,供大家參考。(不想做過多說明,大家一看就應該能夠明白)

 1 Class IPerson
 2 
 3 {
 4 
 5 public 6 
 7    IPerson() {};
 8 
 9    virtual ~IPerson()=0 {}; //注意,最好定義此虛析構函數,夠避免子類不能正常調用析構函數;如果定義為純虛析構函數,則必須帶定義體,因為子類隱含調用該析構函數。
10 
11    //提供給外面使用的接口一般采用純虛函數
12 
13    virtual  void SetName(const string &strName)= 0;
14 
15    virtual  const string GetName()= 0;
16 
17    virtual  void Work()= 0;
18 
19 }

 

 

 

二、接口實現

   實現接口是通過繼承接口的子類來實現的,不同的子類可以實現不同效果,即使所謂多態。

 1 Class CTeacher:public IPerson
 2 
 3 {
 4 
 5 public 6 
 7    CTeacher(){};
 8 
 9    virtual ~CTeacher();
10 
11    string m_strName;
12 
13    void SetName(const string &strName);
14 
15    const string GetName();
16 
17    void Work();
18 
19 }
20 
21 void CTeacher::SetName(const string &strName)
22 
23 {
24 
25     m_strName = name;
26 
27 } 
28 
29 const string CTeacher::GetName()
30 
31 {
32 
33     return m_strName;
34 
35 }
36 
37 void CTeacher::Work()
38 
39 {
40 
41     cout <<"I am teaching!"<<endl;//老師的工作是教書,其他職業的人做的工作是不一樣的。
42 
43 }

 

 

 

三、接口導出

 1 bool GetIPersonObject(void** _RtObject)
 2 {
 3 
 4    IPerson* pMan = NULL;
 5 
 6    pMan = new CTeacher();
 7 
 8    *_RtObject = (void*)pMan ;
 9 
10    return true;
11 
12 } 
13 
14 __declspec(dllexport) bool GetIPersonObject(void** _RtObject);

 

 

 

四、接口使用 

 1 #include "IPerson.h"
 2 
 3 #pragma  comment(lib,"IPerson.lib")
 4 
 5 bool  __declspec(dllimport)  GetIPersonObject(void** _RtObject);
 6 
 7  
 8 
 9 /* 測試例子 */
10 
11 void main()
12 
13 {
14 
15        IPerson *    _IPersonObj = NULL;
16 
17    void*      pObj=NULL;
18 
19        if (GetIPersonObject(&pObj))        
20 
21         {
22 
23             // 獲取對象
24 
25            _IPersonObj = (IPerson *)pObj;
26 
27             // 調用接口,執行操作
28 
29             _IPersonObj ->SetName("Tom");
30 
31              string strName = _IPersonObj->GetName;
32 
33            _IPersonObj->work();
34 
35        }
36 
37        if (_IPersonObj !=NULL)
38 
39        {
40 
41            Delete _IPersonObj ;
42 
43            _IPersonObj  = NULL;
44 
45        }
46 
47 }

到此為止,基本完整演示了接口的定義及實現,有不足之處,請指教。^-^...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM