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