栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ 学习—模板

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ 学习—模板

函数模板
#include
#include
using namespace std;
//函数模板(申明和定义必须在一个源文件)
template//类型别名
T max(T a, T b)
{
	return a > b ? a : b;
}
int main()
{
	cout << max(12, 34) << endl;
	int(*maxint)(int, int) = &max;//函数指针
	cout << maxint << endl;

	cout << max(12.99, 12.88) << endl;
	double(*max1)(double, double) = &max;
	cout << max1 << endl;

	cout << max("hello", "world") << endl;
	system("pause");
}
函数模板和普通函数的判断
#include
#include
using namespace std;
template
T const &max(T const& a, T const& b)
{
	cout << "T  T" << endl;
	return a > b ? a : b;
}
template
T *const &max(T* const& a, T* const& b)
{
	cout << "T*  T*" << endl;
	return a > b ? a : b;
}
const char* const &max(const char* const&a,const char* const&b)
{
	cout << "const char* const&" << endl;
	return strcmp(a,b)>0?a:b;
}
template
T const &max(T const& a, T const& b, T const& c)
{
	cout << "T  T  T" << endl;
	return map(map(a,b),c));
}
//	cout << "T  T" << endl;              1
//cout << "T*  T*" << endl;              2
//cout << "const char* const&" << endl;  3
//cout << "T  T  T" << endl;             4
int main()
{
	char*const a = "abc";
	char*const b = "efg";
	char*const c = "vd";
	//编译器优先普通函数不是函数模板,除非函数模板提出最匹配
	max(a, b);                  //3
	max(10, 20);                //1
	max((char*)a, b);           //3
	max((char*)a, (char*)b);    //2
	max(a, b, c);
	max<>(a, b);//带<>必须从函数模板中选择  3
	//为什么不选择2是因为会加上char*这样就成了二级指针不匹配
	max(a, b);//带选择  1
	system("pause");
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号