C++核心编程和桌面应用开发 第十天(模版 类模板)

目录

1.1函数模板语法

1.2函数模板的使用方式

1.2.1自动类型推导

1.2.2显示指定类型

1.3普通函数与模板函数

1.3.1区别

1.3.2调用规则

1.4模板的局限性

1.4.1模板的具体化

1.5类模板

1.5.1基本语法

1.5.2类模板对象做函数参数

1.5.3类模板与继承

1.5.4类模板成员函数类外实现

1.5.5类模板分文件编写

1.5.6类模板与友元

1.5.6.1类内实现

1.5.6.2类外实现

 1.5.7举例:通过类模板创建数组类MyArray


1.1函数模板语法

建立通用的模具,大大提高复用性,模板只是一个框架,不可以直接使用

//T代表数据类型
template<typename T>

void mySwap(T& a, T& b)
{
	T temp = a;
	a = b;
	b = temp;
}

1.2函数模板的使用方式

1.2.1自动类型推导

int a = 10;
int b = 20;

mySwap(a, b);

编译器会自动推导出T的类型为int

1.2.2显示指定类型

int a = 10;
int b = 20;

mySwap<int>(a, b);

明确指定T的类型为int 

注意事项:

①自动类型推导,必须正确推出T的类型,否则无法成功调用函数

 ②模版必须指定或推导出T的类型,否则不可单独使用

1.3普通函数与模板函数

1.3.1区别

  • 普通函数调用时,可以发生自动类型转换(隐式类型转换);
  • 函数模板调用时,若利用自动类型推导,不会发生隐式类型转换;若利用显示指定类型,可以发生隐式类型转换。

1.3.2调用规则

  • 函数模板和普通函数都可以实现时,优先使用普通函数
  • 可以通过空模板参数列表强制调用函数模板
  • 函数模板可以重载
  • 若函数模板可以产生更好的匹配,优先调用函数模板

注意:通过函数模板产生的函数,称为模板函数

myPrint(c1,c2)会调用函数模板,因为若调用普通函数,会进行类型转换,而调用函数模板,直接就能获取到数据类型,代价更小,因此调用函数模板

1.4模板的局限性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值