C 多重繼承 實現解耦,mvc分離

2021-06-18 01:24:08 字數 1846 閱讀 1076

以前剛開始學習c++時候,覺得多重繼承完全沒有必要。傷腦筋,處理不好。最後1個類會繼承n多父親類處理。

晚上看django資料時候。發現django的cbv(class base view)是使用多重整合的。

分為mixin與view部分。

子類化view時候,通過繼承自定義的mixin來處理引數過濾。瞬間想到這其實是一種外掛程式機制。也可以說實現了mvc的部分分離。

網上找了一下c++的多重繼承資料,基本都在講多重繼承的語法。

用c++來實現下。

邏輯處理部分logic.h中

//

// logic.h

// multipleinheritance

//// created by  王 巖 on 13-8-23.

//#ifndef multipleinheritance_logic_h

#define multipleinheritance_logic_h

class mixin

virtual int getparam()

};#endif

controler部分在 render.h中。**

//

// render.h

// multipleinheritance

//// created by  王 巖 on 13-8-23.

//#ifndef multipleinheritance_render_h

#define multipleinheritance_render_h

#include "views.h"

#include class render

};#endif

檢視部分在view.h中,**

//

// views.h

// multipleinheritance

//// created by  王 巖 on 13-8-23.

//#ifndef multipleinheritance_views_h

#define multipleinheritance_views_h

#include "logic.h"

#include "render.h"

#include #include class view

virtual void settemplatename(std::string sname)

void as_view()

};class getview : virtual public mixin , virtual public view

};#endif

子類化實現在 main.cpp中**

//

// main.cpp

// multipleinheritance

//// created by  王 巖 on 13-8-23.

//#include #include "views.h"

class submixin : virtual public mixin

};class subgetview : virtual public submixin , virtual public getview

};int main(int argc, const char * argv)

執行結果:

i come from view: hello.world

i come from data: 100

C 如何實現多重繼承

多重繼承 乙個類從兩個或多個基類派生。多繼承的好處 減少程式複雜性,減少出錯的可能性,執行效率更高。舉例 senddtata類的作用是傳送資料,receivedata類的作用是接收資料,現在要建立socketdata類,作用是傳送和接受資料,此時,你希望socketdata從senddtata和re...

C 通過介面實現多重繼承

using system using system.collections.generic using system.text 通過介面實現多重繼承 namespace inte cedemo public bool ismale inte ce teacher 定義介面 inte ce docto...

C 多重繼承下,函式指標的多型實現

最近在看 深度探索c 物件模型 在看到函式部分,遇到乙個關於多重繼承和函式指標如何實現多型的問題。如果你想看懂本篇內容,需要先理解c 中變數的記憶體模型,一點點的彙編基礎。本篇部落格是基於微軟編譯器 類成員虛函式指標可以實現多型嘛?我們有一段單繼承的 並且定義了乙個函式指標,我們問題是 類成員虛函式...