形成過程
生物的適應性變化區分成生物的進化和特化兩種不同的概念。進化即生物逐漸演變,向前發展的過程;
特化是指生物的水平發展的物種形成過程,即生物多樣性的形成過程,這種區分可以避免許多不必要的爭論,把這個新的概念體系和以往人們對生物進化研究的理論相結合。並用該方法重新解釋以往人們的研究發現,可以看出生物發展的歷史就是生物進化和特化交替進行的歷史,以此可解釋許多不同理論之間的矛盾。
含義
例如
馬從多趾向單蹄方向發展,
愛爾蘭鹿有特別發達而沉重的角,等等,這些都是特化式進化的結果。生物特化的器官或生理特徵都是對特殊的局部環境高度適應的結果。由於特化,生物類型大大縮小了原有的適應範圍,所以當環境發生突然的或較大的變化時,往往導致它們的滅絕,成為進化樹中的盲枝。
簡化式進化
簡化式進化(或稱退化)——由結構複雜變為結構簡單的進化。如:
蛔蟲的運動器官、感覺器官退化,只有生殖器官發達。
模板顯示特化
在有些時候,一般性的模板定義對於某種類型來說並不適用。例如,假設我們有函式模板max()
的定義:
// 通用的模板定義template<class T>T max(T t1, T t2){ return (t1 > t2 ? t1 : t2);}
如果函式模板用const char*型的模板實參實例化,並且我們還想讓每個實參都被解釋為
C 風格的字元串,而不是字元的指針,則通用模板定義給出正確的語義就不正確了。為了獲
得正確的語義,我們必須為函式模板實例化提供特化的定義。
在模板顯示特化定義(explicit specialization definition) 中,先是關鍵字template 和一對
尖括弧(<>, 一個小於號和一個大於號),然後是函式模板特化的定義。該定義指出了模板
名、被用來特化模板的模板實參,以及函式參數表和函式體。在下面的例子中,為max(const
char*, const char*)定義了一個顯示特化:
#include <cstring>// const char* 顯示特化:// 覆蓋了來自通用模板定義的實例typedef const char* PCC;template<> PCC max<PCC>(PCC s1, PCC s2){ return (strcmp(s1, s2) > 0 ? s1 : s2 );}
由於有了這個顯示特化,當在程式中調用函式max(const char*,const char*)時,模板不會
用類型const char*來實例化。對所有用兩個const char*型實參進行調用的max(), 都會調用這
個特化的定義。而對於其他的調用,根據通用模板定義實例化,一個實例然後再調用它。