C++:模板

时间:2019-01-18
本文章向大家介绍C++:模板,主要包括C++:模板使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、函数模板
template <typename ***>
该模板声明只适用于当前函数

调用的时候有两种方法:
1.隐式调用
编译器会自动识别

 mySwap(a, b);

2.显式调用

mySwap<double>(d1, d2);

函数模板:将算法与数据类型分开,可以专注于算法的实现

.函数模板与普通函数一起使用时,应该遵循的原则

1、隐式调用过程中不支持类型自动转换
2、当普通函数和函数模板都可以调用的时候,优先调用普通函数
3、当函数模板可以提供更优选择的时候,优先调用函数模板
4、函数模板支持重载

三.模板的实现机制

模板并不是真的将类型作为参数进行传递
根据调用的时候来创建 相应类型的函数 ==> 模板: 生成函数的样本

模板两次编译
第一次是对模板本身编译
第二次是在调用对调用语句进行编译

模板函数:由模板生成的函数

四.类模板

函数 —> 函数模板 —> 实现通用算法
类 ----> 类模板 —> 实现各种通用的数据类型

类模板不允许隐式调用

模板对象作为参数传递
1、写普通函数
2、写函数模板

1、派生具体的类
2、派生模板类

五.类模板的使用

运算符重载:友元函数在类的外部不给用

1、在类模板中,友元函数可以在类的内部进行实现,但是友元函数不是类的成员函数,还是类的外部函数
2、函数模板的成员函数在类的外部进行实现
(1)函数模板的成员函数在类的外部进行实现,必须全部写成函数模板
(2)类名和域解析符之间要加 T
(3)在类的内部 定义对象的 类型可加可不加
(4)如果返回值是对象类型,则必须加

类模板的友元函数
(1)友元函数要在类之前进行声明
(2)类对函数进行友元函数声明的时候,需要在函数名和形参列表之间加

类模板分文件的时候,要包含.cpp文件

写类模板的时候一般将实现文件命名为 ***.hpp 文件,表明是可以被包含的文件。