以前剛開始學習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 中變數的記憶體模型,一點點的彙編基礎。本篇部落格是基於微軟編譯器 類成員虛函式指標可以實現多型嘛?我們有一段單繼承的 並且定義了乙個函式指標,我們問題是 類成員虛函式...