今天在看到一位?網(wǎng)友關(guān)于泛型編程的一個(gè)問(wèn)題,源代碼我稍整理變成這個(gè)樣子
這里是"多態(tài)性"的一種實(shí)現(xiàn)方式
?
#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沒(méi)有什么優(yōu)劣之分,如做乘法和做加法沒(méi)有好壞之分一樣.
但這里,我還是想問(wèn)一下,這里有模板有什么具體的好處?
?
與之等效的我可以通過(guò)從基類派生的方式,實(shí)現(xiàn)同樣的效果,但眾所周知,繼承伴隨著是virtual table和性能下降.這里,用這種方法顯然可以避開(kāi)上述問(wèn)題.
?
這只是我的認(rèn)知能力,出于拋磚引玉的目的,希望大家能多發(fā)表點(diǎn)意見(jiàn).這還有什么益處呢?