今天在看到一位?網友關于泛型編程的一個問題,源代碼我稍整理變成這個樣子
這里是"多態性"的一種實現方式
?
#include?<stdio.h>?
template?<class?BASE>?
class?A?:?public?BASE?
{?
public:?
??void?print()?
??{?
????BASE::b();?
??}???
};?
class?B?
{?
public:?
??void?b()?
??{?
????printf("?Class?B---------------------\n");?
??}???
};?
class?C?
{?
public:?
??void?b()?
??{?
????printf("?Class?C---------------------\n");?
??}???
};?
int?main(int,?char*?[])?
{?
??A<B>?c;?
??c.print();?
??A<C>?c2;
??c2.print();
??return?0;???
}?
盡管General Programming 與Object-Oriend Programming沒有什么優劣之分,如做乘法和做加法沒有好壞之分一樣.
但這里,我還是想問一下,這里有模板有什么具體的好處?
?
與之等效的我可以通過從基類派生的方式,實現同樣的效果,但眾所周知,繼承伴隨著是virtual table和性能下降.這里,用這種方法顯然可以避開上述問題.
?
這只是我的認知能力,出于拋磚引玉的目的,希望大家能多發表點意見.這還有什么益處呢?