C++ 模板函数的使用
生活随笔
收集整理的這篇文章主要介紹了
C++ 模板函数的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
因為C++是強類型的語言,所以不能夠像動態語言Python、lua等語言一樣,編寫一段通用的邏輯,可以將不同類型的變量傳進去直接處理。泛型編程解決了這個問題,通過設計模板,擺脫了類型的限制,提高了代碼的可重用性。
普通的模板函數:
如果在類里面使用模板函數:
using namespace std;class Test{public:Test(int nParent = 0);~Test();public:template<typename T, typename F, typename R> bool addMap(T &pMap, F pField, R pValue);}; template<typename T, typename F, typename R> bool Test:: addMap(T &pMap, F pField, R pValue){if(isContians(pMap, pField)){return false;}pMap.insert(pField, pValue);return true;}這邊需要說明幾點:
1、假設你的模板函數只在類里面使用,模板函數的實現可以放在cpp文件中
2、假設你的模板函數在類外也有使用場景,模板函數的實現必須放在頭文件中,如果實現放在cpp文件中,那么恭喜你喜提error: LNK2019: 無法解析的外部符號 "public: void __cdecl XXX 錯誤一枚,出現這個錯誤的原因是程序在編譯的時候找不到函數的實現(雖然已經聲明了函數)
模板函數中類型的判斷:
template<typename T> T add(const T a, const T b){cout<<std::is_same<T, int>::value<<endl;//上面的語句能夠判斷T是否是int類型,如果是會輸出truereturn a + b;}返回值也為類型的模板函數的使用:
template<typename T, typename F, typename R> R Test:: getMapValue(T &pMap, F pField){return pMap.value(pField);}int a = <int>getMapValue(m_mMap, "age");總結
以上是生活随笔為你收集整理的C++ 模板函数的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【渝粤教育】国家开放大学2018年秋季
- 下一篇: 学习笔记(13):C++编程FFMpeg