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

C++57个入门知识点

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

C++57个入门知识点

本篇解决以下几个问题:
1.什么是模板?使用模板的原因?
模板是为了解决函数在使用过程中只是数据类型发生变化,而内容未发生变化,这个时候就可以使用模板来表示多种数据类型的状况。
打个比方,同样的凉拌菜调味配方,你可以用来这个调味配方,凉拌个黄瓜,也可以凉拌个猪耳朵(可变的就是黄瓜和猪耳朵)。
2.函数模板的定义?

//模板--核心:把某些类型(int double...)的关键字看成是变量(函数重载的泛化)
template
T GetMin(T a, T b)
{
	return a > b ? a : b;
}

3.函数模板隐式实例化及存在的问题?
隐式实例化:

//函数模板的隐式实例化(由编译器猜测函数模板的类型)
	int n=GetMin(1,1);

隐式实例化可能会导致编译器在选择匹配函数时陷入两难境界。
例如:GetMin(1,2.0f)就会让编译器不知道该找哪一个,这个时候可以采用显式实例化来指定数据类型。
4.函数模板显式实例化

//显式实例化,指明数据类型
	GetMin(1, 2.0f);

5.函数模板的特例
前面的均为数值的比较,如果需要比较两个字符串该怎么做呢?

//当函数模板不够用,可以采用模板特例化的形式
//模板的特例化
template<>
char* GetMin(char* a, char*b)
{
	return a;
}
	//模板的特例化使用
	GetMin("Hello","World");

6.学习视频地址:函数模板
7.学习笔记:

#include 

using namespace std;

//模板--核心:把某些类型(int double...)的关键字看成是变量(函数重载的泛化)

template
T GetMin(T a, T b)
{
	return a > b ? a : b;
}

//当函数模板不够用,可以采用模板特例化的形式
//模板的特例化
template<>
char* GetMin(char* a, char*b)
{
	return a;
}

//在内容不改变,只是变量类型有不同的时候适用模板
//int GetMin(int a, int b)
//{
//	return a > b? a: b;
//}
//
//int GetMin(float a, float b)
//{
//	return a > b ? a : b;
//}

int main(int argc,char* argv[])
{
	//函数模板的隐式实例化(由编译器猜测函数模板的类型)
	int n=GetMin(1,1);

	//显式实例化,指明数据类型
	GetMin(1, 2.0f);

	//模板的特例化使用
	GetMin("Hello","World");
	
	//cout << "int GetMin(int a, int b)" << GetMin(1, 2) << endl;
	//cout << "int GetMin(float a, float b)" << GetMin(1.14f, 2.14f) << endl;

	return 0;
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/443819.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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