C++学习记录-函数模板
C++学习记录-函数模板
一、模板
-
C++的另一种编程思想是 泛型编程 ,主要利用了模板
-
模板机制有两种,函数模板 和 类模板
二、函数模板
函数模板的作用:
建立一个通用函数,函数的返回值类型和参数类型都不确定,交由系统根据传入的数据类型进行判断。
语法:
1 | template<typename T> |
- template:声明创建模板
- typename:表示后面的符号是一种数据类型,可以用**class(类模板)**替代
- T:一个名称,可以替换,通常使用大写字母
三、示例
1 | template<typename T>//声明使用模板 |
1 | //调用函数 |
运行结果:
神里绫人
神里绫华
D:\Work\C艹练习\练手\Project1\Debug\Project1.exe (进程 34684)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
四、函数模板的注意事项
-
必须推导出一致的数据类型时,才可以使用
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14template<typename T>
T swaper(T& a, T& b)
{
T temp = a;
a = b;
b = temp;
return a;
}
//调用
string a = "神里绫华";
int c;
swaper(a, c);
//错误:没有与参数列表匹配的函数模板实例,参数类型为: (std::string, int)1
2
3
4
5
6
7
8
9
10
11
12
13
14template<typename T>
T swaper(T& a, T& b)
{
T temp = a;
a = b;
b = temp;
return 20;
}
//调用
string a = "神里绫华";
string b = "神里绫人";
swaper(a, b);
//错误,C2440 “return”: 无法从“int”转换为“std::basic_string<char,std::char_traits<char>,std::allocator<char>>” Project1 D:\Work\C艹练习\练手\Project1\Project1\源.cpp 11 -
必须确定出T的数据类型,才可以使用
1
2
3
4
5
6
7
8
9template<typename T>
void test()
{
cout << "test" << endl;
}
//调用
test();
//错误
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星辰微光的博客!





