C++程序设计 第11章课件.pptVIP

  • 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

文档评论(0)

1亿VIP精品文档

相关文档