利用模板實現動態的繼承體系 (轉)
/* Loki學習之-----動態的繼承體系
*
* 傳說中的動態繼承.透過模板實現,在實際生成時才真正指定父類.
* 以下是一個簡單演示,只有一個模板引數,在實際應用中,透過多個模板引數的運用,能夠產生極其強大的功能.
*
*/
#include
class Base1
{
public:
Base1()
{
std::cout< }
};
class Base2
{
public:
Base2()
{
std::cout< }
};
template < class Base > class Derive:public Base//關鍵點,Base是一個模板引數
{
public:
Derive()
{
std::cout< }
};
int main()
{
Derive
Derive
}
// 輸出結果 :
// Base1::Base1()
// Derive::Derive()
// Base1::Base2()
// Derive::Derive()
/*
* 可以看到,指定不同的模板引數,實際上導致Derive類的父類發生了變化.(d1:Base1-->d2:Base2)
* 實際上,藉助於模板功能,不僅僅能實現動態繼承,還可以動態確定具體類成員變數,比如在class Derive的實現中,寫下如下程式碼:
*/
template < class Base > class Derive
{
Base base_;
public:
Derive()
{
std::cout< }
}
在 int main() 中:
Derive
Derive
/* 顯然在建立Derive的例項時,才會確定base成員變數的型別(Base1或者Base2).
*
* 在實際的開發中,動態繼承和動態確定成員變數型別意義重大.比如,藉助於動態繼承的靈活性,Loki透過4個模板引數,就實際實現了
* 大約300個各具特色的智慧指標.stl中,透過動態指定成員變數型別Allocator,實現了Vector等容器的分配的可性,
* 透過指定不同的Allocator,實際生成的容器物件便有了不同的,以及其它一些特性.
*/
本文是本人學習<
本人是十成的C++ Fans,希望與大家多多交流.
to:dyunze2002@sina.com.cn">dyunze2002@sina.com.cn
-5-5
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-984587/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JSP模板繼承功能實現JS繼承
- Laravel框架模板之公共模板、繼承、包含實現方法分析Laravel框架繼承
- js如何是利用apply實現繼承JSAPP繼承
- 繼承的實現方式繼承
- js的繼承實現JS繼承
- Request繼承體系繼承
- prototype實現繼承繼承
- 實現JavaScript繼承JavaScript繼承
- 模板類的繼承問題繼承
- JS中繼承的實現JS中繼繼承
- JavaScript實現繼承的方式JavaScript繼承
- C++繼承體系C++繼承
- java抽象繼承-模板方法Java抽象繼承
- ThinkPHP 3.1.2 新增: 模板繼承PHP繼承
- Javascript如何實現繼承JavaScript繼承
- 反射的妙用:C#通過反射動態生成型別繼承介面並實現反射C#型別繼承
- ES6實現繼承繼承
- js--如何實現繼承?JS繼承
- JS 繼承的 六 種實現方式JS繼承
- js實現繼承的三種方式JS繼承
- js 原型鏈實現類的繼承JS原型繼承
- JavaScript物件導向—繼承的實現JavaScript物件繼承
- js實現繼承的幾種方式JS繼承
- javascript繼承的實現方式介紹JavaScript繼承
- 繼承的實現方式及原型概述繼承原型
- 簡單聊聊BeanFactory繼承體系Bean繼承
- java繼承-靜態繫結和動態繫結Java繼承
- javascript的物件導向的繼承實現JavaScript物件繼承
- 實驗四 類的組合、繼承、模板類、標準庫繼承
- 實驗4 類的組合、繼承、模板類、標準庫繼承
- 實驗四 類的組合,繼承,模板類,標準庫繼承
- JavaScript的繼承-轉載JavaScript繼承
- Javascript實現物件導向繼承JavaScript物件繼承
- C#如何實現多重繼承C#繼承
- 使用Object.create()實現繼承Object繼承
- 原型鏈實現繼承的6種方式原型繼承
- JavaScript中的繼承及實現程式碼JavaScript繼承
- 在VB中實現窗體的動態效果 (轉)