1. 程式人生 > >泛型程式設計:源起、實現與意義

泛型程式設計:源起、實現與意義

3.介面直觀性:如果你有一個數組char* arr = new arr[10];那麼該陣列的元素型別其實就已經“透露”了它自己的大小。然而qsort把陣列的元素型別給“void”掉了(void *base),於是丟失掉了這一資訊,而只能讓呼叫方手動提供一個size。為什麼要把陣列型別宣告為void*?因為除此之外別無它法,宣告為任意一個型別的指標都不妥(compar的引數型別也是如此)。qsort為了通用性,把型別資訊丟掉了,進而導致了必須用額外的引數來提供型別大小資訊。在這個特定的演算法裡問題還不明顯,畢竟只多一個size引數而已,但一旦涉及的型別資訊多了起來,其介面的可伸縮性(scalability
)問題和直觀性問題就會逐漸顯現。