用C寫有物件導向特點的程式

2021-04-16 11:53:59 字數 974 閱讀 4114

比如在乙個專案中,有大量的資料結構,他們都是雙向鍊錶,但又想共用一套對鍊錶的操作演算法,這怎麼做到呢,c中又沒有c++中的繼承,不然我可以繼承一父(類中只有兩個指標,乙個向前乙個向後),而其演算法可以寫在你類中的虛函式中,供子類使用。如:

class links

;virtual del();

virtual ins();

virtual print() =0;

....

}; 於是對於特定的資料結構我們可以:

class mylinks : public links

};對其操作時都可以使用你類的泛型演算法。

在c中,該如何做呢?我們用c中的指標和強制型別轉可以做到。

下面是我總結出來的乙個小的程式,體現了用指標的彈性來實現這一繼承的效果:

(我在liniux下的gcc除錯通過)

***********************************====

#include

/* 雙向鍊錶 (類似於父類)*/

typedef struct hlinks hlinks; /*

* 乙個使用雙向鍊錶的結構

*     (類似於子類)

*/typedef struct hent hent; /*

*  雙向鏈插入泛型演算法 (類似於父數中的成員函式)

*/insert( hlinks* elem, hlinks *dest ) /*

*  列印 (類似於子類過載父類的成員函式)

*/printlink( hlinks *h )}

main()

printlink( (hlinks *) &head );

/*   <-------也注意這個強制轉換  */

} 其實,c++就是把c++翻譯成c,再編譯,所以編譯好慢。我這裡的這個動作可能類似c++轉成c後的樣子吧。大家多交流([email protected]

用C寫有物件導向特點的程式

比如在乙個專案中,有大量的資料結構,他們都是雙向鍊錶,但又想共用一套對鍊錶的操作演算法,這怎麼做到呢,c中又沒有c 中的繼承,不然我可以繼承一父 類中只有兩個指標,乙個向前乙個向後 而其演算法可以寫在你類中的虛函式中,供子類使用。如 class links virtual del virtual i...

用C寫有物件導向特點的程式

比如在乙個專案中,有大量的資料結構,他們都是雙向鍊錶,但又想共用一套對鍊錶的操作演算法,這怎麼做到呢,c中又沒有c 中的繼承,不然我可以繼承一父 類中只有兩個指標,乙個向前乙個向後 而其演算法可以寫在你類中的虛函式中,供子類使用。如 class links virtual del virtual i...

用C寫有物件導向特點的程式

比如在乙個專案中,有大量的資料結構,他們都是雙向鍊錶,但又想共用一套對鍊錶的操作演算法,這怎麼做到呢,c中又沒有c 中的繼承,不然我可以繼承一父 類中只有兩個指標,乙個向前乙個向後 而其演算法可以寫在你類中的虛函式中,供子類使用。如 class links virtual del virtual i...