C++学习第15篇-函数模板
来源:互联网 发布:如何搭建数据库 编辑:程序博客网 时间:2024/05/20 05:11
1. 函数模板
1)函数模板的需要
通过以上篇的学习,你可以写出易读、安全和可维护的代码;函数和类是高效编程的灵活工具,但C++必须要求你明确所有参数的类型;
例如你需要写求最大值的函数,包括整型和浮点型:
以上两个函数在形式上是一样的,只是类型不一样。
如果只写一个函数,满足任何类型,可以用函数模板来实现。
1)什么是函数模板?
模板-用以创建类似对象的模式;
在C++中,函数模板是用以创建类似函数的模式。使用模板类型参数-通常简略为-T。
2)创建函数模板
3)使用函数模板
如上可以看出,使用函数模板节省了大量时间,减少了代码维护量,更安全。
模板函数也有一些不足:一些老编译器没有足够的支持;模板函数给出了难以理解的错误信息;
在STL中,已有Max函数。
2. 函数模板示例
1)函数模板示例
C++并没有直接编译模板函数;在编译期间,当遇到调用函数模板,编译器将类型和参数传入模板,执行得到结果;
编译器足够聪明来确定是否需要创建一个不同类型的函数模板实例。
2)运算符、函数调用和函数模板
模板函数应用于内建数据类型和类,模板中调用的任何运算符和函数必须是已定义的。
3. 模板类
函数模板是泛型编程的入门了,但函数模板不能解决所有的问题。
这时,该介绍模板类了。
1)模板和容器类
之前介绍过数组容器:
Arary.h:
测试:
模板类是应用容器类的最理想的;
模板类是C++最好和最有用的特性。
4. 表达式参数和模板特殊化
模板类可以使用另外一种模板参数,即表达式参数。
1)表达式参数:
表达式参数-不是由类型来取代的参数,而是由值来取代的参数。
一个表达式参数可以是:
A)一个是整型或枚举型的值;
B)一个对象的指针或引用;
C)一个函数的指针或引用;
D)一个成员函数的指针或引用。
2)模板特殊化
如下例的Storage:
Storage可以存储多种类型的,但是需要打印如char类型指针时:
我们可以通过函数模板特殊化:
5. 类模板特殊化
如下例:
Storage8适合多种类型。
在前一章节中,可以特殊化成员函数,提供对特殊类型的特殊处理。
2)类模板特殊化
类模板特殊化-允许为明确的数据类型特殊化类模板;类模板特殊化看作是完整独立的类。
- C++学习第15篇-函数模板
- C++学习第15篇-函数模板
- 学习C++模板---模板函数
- C++Template学习笔记之函数模板
- (C/C++学习笔记)函数模板加强
- (C/C++学习笔记)函数模板遇上函数重载
- 【c/c++】函数模板和模板函数
- C++primer学习:类模板(1):函数模板,模板参数,实例化
- C++ Template学习笔记之函数模板(1)——函数模板定义
- C++ Template学习笔记之函数模板(7)——重载函数模板
- C++ Template学习笔记之函数模板(1)——函数模板定义
- C++ Template学习笔记之函数模板(7)——重载函数模板
- C/C++ 函数模板
- c++:函数模板
- 【C++】函数模板
- 【c++】函数模板
- C语言函数模板
- C++:函数模板
- Visual Studio 2010快捷键
- 信息资源管理
- Hibernate缓存
- C++学习第14篇-I/O流
- 项目总结—从零开始(5)
- C++学习第15篇-函数模板
- KWIC
- 软件无线电设计中ASIC、FPGA和DSP的选择策略
- 关于Java中初始化顺序的问题
- Struts2的第一个应用实例
- VMWare8运行Mac OS Lion时安装VMTools的问题
- 动态设置线程数量的例子
- win7下设置cmd操作mysql的环境变量
- UML建模——Rational Rose实验收获