程序员社区

c++模板学习03之普通函数与模板函数区别

普通函数与函数模板的区别

1.普通函数调用可以发生隐式类型转换

#include<iostream>
using namespace std;
//1.普通函数调用可以发生隐式类型转换
int add(int a, int b)
{
	return a + b;
}
int main()
{
	int a = 10;
	int b = 20;
	char c = 'a'; //a对应的ascall码为97
	//将字符c转化为ascall对应的数值与变量a相加
	cout << add(a, c) << endl;
	cout << add(a, b) << endl;
	system("pause");
	return 0;
}

在这里插入图片描述
2.函数模板用自动类型推导,不会发生隐式类型转化

#include<iostream>
using namespace std;
template<class T>
int add(T a, T b)
{
	return a + b;
}
int main()
{
	int a = 10;
	int b = 20;
	char c = 'a'; //a对应的ascall码为97
	//自动类型推导
	cout<<add(a, b) << endl;
	cout << add(a, c) << endl; //会报错,因为不会执行隐式类型转化
	system("pause");
	return 0;
}

3.函数模板用显示指定类型,可以发生隐式类型转化

#include<iostream>
using namespace std;
template<class T>
int add(T a, T b)
{
	return a + b;
}
int main()
{
	int a = 10;
	int b = 20;
	char c = 'a'; //a对应的ascall码为97
	//显示指定类型
	cout << add<int>(a, c) << endl; //会执行隐式类型转化
	system("pause");
	return 0;
}

赞(0) 打赏
未经允许不得转载:IDEA激活码 » c++模板学习03之普通函数与模板函数区别

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区