第9章--模板
来源:互联网 发布:混沌战域神兵进阶数据 编辑:程序博客网 时间:2024/05/20 06:07
函数模板+类模板
一、
函数模板:
1. 函数模板可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计。
2. 定义方法:
template <模板参数表>
3. 函数定义
模板参数表的内容
类型参数:class(或typename) 标识符
常量参数:类型说明符 标识符
模板参数:template <参数表> class 标识符
例:求绝对值函数的模板
#include <iostream>using namespace std;template<typename T>T abs(T x) { return x < 0? -x : x;}int main() { int n = -5; double d = -5.5; cout << abs(n) << endl; cout << abs(d) << endl; return 0;
分析:
编译器从调用abs()时实参的类型,推导出函数模板的类型参数。例如,对于调用表达式abs(n),由于实参n为int型,所以推导出模板中类型参数T为int。
当类型参数的含义确定后,编译器将以函数模板为样板,生成一个函数:int abs(int x) { return x < 0 ? –x : x;}
二、
类模板:
如果要对功能相同、仅类的数据类型不同的各种情况,都重新定义一种新的类型,会产生较大的重复。
- 类模板的定义:
在类的声明前加一行模板关键字。它用一个通用参数 来替代不同的数据类型。类模板的定义格式为:
template <class 类型参数名>class <类模板名>{ //类体说明 };
其中template 是关键字;<class 类型参数名>中可以有多个参数,其间用逗号分隔。
- 使用类模板定义对象的方法:
类模板名 < 实际数据类型名 > 对象名( 实参列表 )
例 :声明一个类模板,分别实现2个整数、
符点数、字符的比较。
#include <iostream.h>template <class T> // 定义类模板class compare //类模板是compare{public: compare (T a, T b ) { x=a; y=b; } T max( ) { return (x>y)? x : y; }private: T x,y;};void main( ){ compare < int > cmp1(3,7); //使用类模板定义对象cmp1 cout<<cmp1.max( )<<“是两个整数中最大的数”<<endl; compare < char > cmp2(‘a’,’g’); cout<<cmp2.max( )<<“是两个字符中最大的字符”<<endl; compare < float > cmp3(1.0, 3.0); cout<<cmp3.max( )<<“是两个浮点数中最大的数”<<endl;}
声明和使用类模板的步骤:
1、写出一个实际类,其语义清晰、准确。
2、将准备更换的类型名改为虚拟类型名
3、在类的声明前加一行,格式为:
template <class虚拟类型名>
4、用类模板定义对象时,使用以下方式:
类模板名 < 实际数据类型名 > 对象名
或: 类模板名 < 实际数据类型名 > 对象名( 实参列表 )
阅读全文
0 0
- 第9章--模板
- 第 9 章 模板方法模式
- 第6章---模板
- 第10章:模板
- 第3章 模板
- c++程序设计学习笔记第9章:模板
- 第24章 标准模板库介绍
- C++讲义 第10章 模板
- 第12章 模板与STL
- 第7章 Handlebars模板引擎
- C++标准ISO-IEC-14882-2003:第14章:模板-第1节:模板的参数
- C++标准ISO-IEC-14882-2003:第14章:模板-第3节:模板实参
- django第三部 模板
- C++标准ISO-IEC-14882-2003:第14章:模板
- 第16章 模板与泛型编程
- 第08章 CORE C++_模板_总结
- 《C++ Primer》 第16章 模板与泛型编程
- The Django Book【第4章 Django模板系统】
- C语言发展史
- java环境变量的配置
- ESET NOD32 v11.0.154
- Java面向对象(2)
- 策略模式
- 第9章--模板
- python爬虫基础知识(二)--正则表达式
- 442. Find All Duplicates in an Array(C++)
- 什么时候使用assert
- CSS3(十八)
- Java中Lambda表达式的使用
- XAMPP设置MySql服务器用户名密码及远程访问权限
- 众所周知,在每一个彗星后都有一只UFO。这些UFO时常来收集地球上的忠诚支持者。不幸的是,他们的飞碟每次出行都只能带上一组支持者。因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走。他们为
- SQL优化