欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

ADT可以實現什么樣層次的代碼通用?

呂致盈2年前13瀏覽0評論

ADT物件抽象可以有兩種底層實現方法,一是typedef,二是#define。兩者各有優缺點,typedef的內聚性比#define明顯更好,但由于typedef定義的別名無法更改,因此不適于同一編譯單元需要多于一種物件抽象的情況,此時可以改用#define,因為可以通過#undef去掉先前定義的宏名,再重新定義。

對于void*,并不是適合于任何場合的,不應一股腦兒都使用void*,特別對于樓主所舉的例子,void*是不適合作為Item的替代物的,因為這里的Item都屬于同一類型,沒有必要再多一層間接性。如果所抽象的物件具有不同的類型,就可以考慮void*。

把typedef的用法稱為“通用性”并不精確,所謂“通用性”其實不過是一件副產品。C的ADT目的是為了實現代碼復用,體現的是原始的封裝和接口與實現分離,各種“物件”是其操作對象,不同情況下物件的構成當然會有所不同,typedef的類型定義就是各種物件的不同抽象。