- 1
- 0
- 约7.9千字
- 约 39页
- 2017-04-24 发布于湖北
- 举报
第11章 模板;11.1模板概述;模板的两种类型及用法;11.2 模板函数的语法;模板函数举例;我们先来看一个例子
#include “iostream.h”
templateclass T //声明一个函数模板
T max(T x, T y)
{
return (xy)? x:y;
}
; void main()
{
int a = 6, b = 8;
float c = 8.5, d = 2.2;
double e = 21.123, f = 145.987;
char g = ‘z’, h = ‘m’;
coutmax(a,b)endl; //函数模板的实例化
coutmax(c,d)endl;
coutmax(e,f)endl;
coutmax(g,h)endl;
}
;结论:模板被编译了两次,分别发生在:
实例化之前,先检查模板代码本身,查看语法是否正确:在这里会发现错误的语法,如遗漏分号等。
在实例化期间,检查模板代码,查看是否所有的调用都有效。在这里会发现无效的调用,如该实例化类型不支持某些函数调用等。 ;11.2.2模板函数重载;【程序11.1】
// 求???个int值的最小值
inline int const min (int const a, int const b)
{
return a b ? a : b;
}
// 求两个任意类型值的最小值
template typename T
inline T const min (T const a, T const b)
{
return a b ? a : b;
} ;// 求三个任意类型值的最小值
template typename T
inline T const min (T const a, T const b, T const c)
{
return min(min(a, b), c);
}
int main( )
{
min(2, 13, 45); // 调用三个参数的模板函数
min (2.0, 13.0); // 调用min double (通过实参演绎)
min (a, b); // 调用min char (通过实参演绎)
min (2, 13); // 调用有两个int类型参数的普通函数
min int (2, 13); // 调用min int (通过实参演绎)
min double(2, 13); // 调用min double (没有实参)
return 0;
} ;11.3 模板类;调用形式:
ClassName类型实参表 object;
模板类是类模板对某一特定类型的实例。;看下面一个例子:;//主程序
main()
{
myclassint , double ob1(12, 0.15);
//定义模板类myclassint,double
myclasschar, char*ob2(‘x’, “This is a test”);
//定义模板类myclasschar, char*
ob1.show();
ob2.show();
return 0;
}
;11.3模板的多态;11.3.2模板类多态 ; 1. 使用继承和虚函数实现的多态(动态的多态)实现过程为:
1) 识别抽象概念2) 在抽象基类中将共有方法声明为虚函数3) 在各个派生类中实现这些共有方法
例如:
class File
{
public:
virtual void Open() = 0;
virtual void Save() = 0;
virtual void SaveAs(String) = 0;
virtual void Close() = 0;
};;class TextFile : public File
{
public:
void Open();
void Save();
void SaveAs(String);
void Close();
};
class ImageFile : public File
{
public:
void Close();
void Save();
void SaveAs(String);
void Close();
};; // 通过菜单项打开文件
void menu_open_file(File
您可能关注的文档
- 会计工作基本流程剖析.doc
- 审计案例分析答案概述.doc
- 金融名词集锦剖析.doc
- 数值计算方法复习题9概述.doc
- 安永华明会计师事务所大连分所负责人基本情况祥解.doc
- 人寿万能型人身保险财务管理办法剖析.doc
- 2013初级职称经济法习题第三章资料.docx
- 2014年执业药师考试《药事管理与法规》考试真题幻灯片.doc
- 2015年药店gsp认证资料--申报表格附件6幻灯片.doc
- 上财801经济学09年真题剖析.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
原创力文档

文档评论(0)