模板属于静态多态,作用于编译阶段。
-
面向对象编程
-
模板编程——编译时间变长
●泛型编程:注重于“通用概念”的抽象,设计通用的类型或算法,不需要过于关心编译器如何生成具体的代码。
●元编程:注重于设计模板推导时的选择和迭代,通过模板技巧设计程序。
- 宏定义只是简单的替换,很多事情做不了。
- 如果没有模板,那stl容器就需要实现很多遍。
template
void print(T t) {
cout << "call template function" << endl;
}
函数模板特化
template <>
void print(int n) {
cout << "call template int function" << endl;
}
tips:
- 没有调用,模板就不会进行实例化。
- auto关键字对模板返回值的推导仅在C++14及以上版本支持,在C++11中可以使用decltype关键字进行替代。
例子如下:
template
auto add(T a, U b) {//仅在C++14及以上版本支持
return a + b;
}
template
auto add(T a, U b)->decltype(a + b) {//C++11可以用decltype进行替代
return a + b;
}
————————————————————————————————————————————
本人倾向于先将学到的知识写成博客分享出来,之后在进行整理。
如果文章不见了,大概率被整合到了其他相关文章当中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)