比如在一個(gè)項(xiàng)目中,有大量的數(shù)據(jù)結(jié)構(gòu),他們都是雙向鏈表,但又想共用一套對(duì)鏈表的操作算法,這怎么做到呢,C中又沒(méi)有C++中的繼承,不然我可以繼承一父(類中只有兩個(gè)指針,一個(gè)向前一個(gè)向后),而其算法可以寫(xiě)在你類中的虛函數(shù)中,供子類使用。如:
class Links{public: Links* back; Links* forword;
virtual Add(){ ... }; virtual Del(){ ... }; virtual Ins(){ ... }; virtual Print() =0; ....
};
于是對(duì)于特定的數(shù)據(jù)結(jié)構(gòu)我們可以:class mylinks : public Links { public: char* myname; char sex; int age; ... virtual Print(){ .... }
};對(duì)其操作時(shí)都可以使用你類的泛型算法。
在C中,該如何做呢?我們用C中的指針和強(qiáng)制類型轉(zhuǎn)可以做到。
下面是我總結(jié)出來(lái)的一個(gè)小的程序,體現(xiàn)了用指針的彈性來(lái)實(shí)現(xiàn)這一繼承的效果:(我在Liniux下的GCC調(diào)試通過(guò))
=======================================