C++介面定義及實現舉例

來源:互聯網
上載者:User

標籤:lex   方式   定義   方法   通訊   說明   teacher   out   無法   

一、介面的定義

    有時候,我們得提供一些介面給別人使用。介面的作用,就是提供一個與其他系統互動的方法。其他系統無需瞭解你內部細節,並且也無法瞭解內部細節,只能通過你提供給外部的介面來與你進行通訊。根據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 }

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

C++介面定義及實現舉例

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.