C++ 模板函数的使用

编程入门 行业动态 更新时间:2024-10-09 04:19:06

C++ 模板<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数的使用"/>

C++ 模板函数的使用

因为C++是强类型的语言,所以不能够像动态语言Python、lua等语言一样,编写一段通用的逻辑,可以将不同类型的变量传进去直接处理。泛型编程解决了这个问题,通过设计模板,摆脱了类型的限制,提高了代码的可重用性。
普通的模板函数:

	template<typename T> T compare(const T &a, const T &b){return a <= b ? a : b;}int i = 2, j = 4;int a = compare(i, j);

如果在类里面使用模板函数:

	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++ 模板函数的使用

本文发布于:2023-07-03 14:38:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1007778.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   模板

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!