c++ template-笔记

http://my.oschina.net/hnuweiwei/blog/268451

如果一段代码除了类型不同,其他都相同,使用模板可以避免重复的工作

模板是一些为多种类型编写的函数或类,类型未指定。使用模板时,把类型作为参数传递给模板。

模板使用非常广泛,c++标准库几乎所有代码都是模板代码

head.h

1 template <typename T>
2 inline T const & maxer(const T & a, const T &b) {
3     return a > b ? a : b;
4 }

Main.cpp

 1 #include <cstdlib>
 2 #include<iostream>
 3 #include"head.h"
 4 using namespace std;
 5 int main()
 6 {
 7     cout << "maxer(1,2)is" << maxer(1, 2) << endl;
 8     cout << "maxer(1.1,2.4)is" << maxer(1.1, 2.4) << endl;
 9     cout << "maxer('a','b')is" << maxer('a', 'b') << endl;
10     cout << "maxer<double>(1,1.2)is" << maxer<double>(1, 1.2) << endl;
11     system("pause");
12     return 0;
13 }

模板被编译了两次,一次是实例化之前检查模板本身,另一次是实例化期间检查类型或调用,

模板可以被重载,可以和一个同名的非模板函数共存,而且该模板还可以转化为这个非模板函数。对于非模板函数和同名的模板函数,

如果其他条件都相同重载解析过程会调用非模板函数

如果模板可以产生一个更好的匹配则选择模板函数

Coding
原文地址:https://www.cnblogs.com/ccie-leon-43093/p/5452219.html