您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++中的函數模板通式的調用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++中的函數模板通式的調用”吧!
模板是C++支持參數化多態的工具,使用模板可以使用戶為類或者函數聲明一種一般模式,使得類中的某些數據成員或者成員函數的參數、返回值取得任意類型。
模板是一種對類型進行參數化的工具;
通常有兩種形式:函數模板和類模板;
函數模板針對僅參數類型不同的函數;
類模板針對僅數據成員和成員函數類型不同的類。
使用模板的目的就是能夠讓程序員編寫與類型無關的代碼。比如編寫了一個交換兩個整型int類型的swap函數,這個函數就只能實現int型,對double,字符這些類型無法實現,要實現這些類型的交換就要重新編寫另一個swap函數。使用模板的目的就是要讓這程序的實現與類型無關,比如一個swap模板函數,即可以實現int型,又可以實現double型的交換。模板可以應用于函數和類。下面分別介紹。
注意:模板的聲明或定義只能在全局,命名空間或類范圍內進行。即不能在局部范圍,函數內進行,比如不能在main函數中聲明或定義一個模板。
函數模板的格式:
template
{
函數體
}
其中template和class是關見字,class可以用typename關見字代替,在這里typename和class沒區別,<>括號中的參數叫模板形參,模板形參和函數形參很相像,模板形參不能為空。一但聲明了模板函數就可以用模板函數的形參名聲明類中的成員變量和成員函數,即可以在該函數中使用內置類型的地方都可以使用模板形參名。模板形參需要調用該模板函數時提供的模板實參來初始化模板形參,一旦編譯器確定了實際的模板實參類型就稱他實例化了函數模板的一個實例。比如swap的模板函數形式為:
template
當調用這樣的模板函數時類型T就會被被調用時的類型所代替,比如swap(a,b)其中a和b是int型,這時模板函數swap中的形參T就會被int所代替,模板函數就變為swap(int&a,int&b)。而當swap(c,d)其中c和d是double類型時,模板函數會被替換為swap(double&a,double&b),這樣就實現了函數的實現與類型無關的代碼。
注意:對于函數模板而言不存在h(int,int)這樣的調用,不能在函數調用的參數中指定模板形參的類型,對函數模板的調用應使用實參推演來進行,即只能進行h(2,3)這樣的調用,或者inta,b;h(a,b)。
感謝各位的閱讀,以上就是“C++中的函數模板通式的調用”的內容了,經過本文的學習后,相信大家對C++中的函數模板通式的調用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。