模拟和IO流
模板和I/O流
士主要内容 ■模板的概念 ■函数模板的定义 ■模板函数的生成 ■区分类模板和模板类 类模板的定义和使用
主要内容 ◼ 模板的概念 ◼ 函数模板的定义 ◼ 模板函数的生成 ◼ 区分类模板和模板类 ◼ 类模板的定义和使用
模板 int f(int x,inty ireturn(x+y;y double f(double x, double return(x+yi] float f(float x float y return(x+y;] 数学抽象: T add(tx t yi return x+yi y
模板 int f(int x,int y) {return (x+y);} double f(double x, double y) {return (x+y);} float f(float x, float y) {return (x+y);} 数学抽象: T add(T x, T y) { return x+y; }
什么是模板? 模板是对具有相同特性的函数或类的再抽 象。C++面向对象技术中更高一级的抽象和参 数性多态的体现。 模板并非一个实实在在的函数或者类,而 是关于函数和类的描述。使用时,需要对参数 实例化,构造出具体的函数和类。这一步由编 译系统自动完成
什么是模板? 模板是对具有相同特性的函数或类的再抽 象。C++面向对象技术中更高一级的抽象和参 数性多态的体现。 模板并非一个实实在在的函数或者类,而 是关于函数和类的描述。使用时,需要对参数 实例化,构造出具体的函数和类。这一步由编 译系统自动完成
模板与它的实例 模板 函数模板或类模板 实例 实例化 模板函数 模板类对象 实例化 函数模板Tadd(TxTy){ return x+y; 侠例化 int f(int x,int y return(x+yi] 模板函数{ double f( double x, double y) return(x+y);} 系统隐式 float f( float x, float y) return(x+y)} 生成
模板与它的实例 模板 (函数模板或类模板) 模板函数 模板类 对象 实例化 实例化 实例化 T add(T x, T y) { return x+y; } int f(int x,int y) {return (x+y);} double f(double x, double y) {return (x+y);} float f(float x, float y) {return (x+y);} 函数模板 模板函数 实例化 系统隐式 生成
函数模板 参数化的函数称为函数模板 定义格式: template () 至少一个
函数模板 --参数化的函数称为函数模板 定义格式: template () { } 至少一个
说明: ·中的一项均由关键字cass开始,表示 种数据类型,在使用函数模板时必须将其实例化 参数表必须至少有一个参数说明,并且中的每个模板参数都必须在中得到使用。 函数模板的定义知识一种说明,不是一个具体的函数 编译系统不为其产生任何执行代码。只有当编译器发 现一个具体的函数调用时,才根据具体的参数类型产 生相应的代码,这部分代码称为模板函数。它是函数 模板的一个具体实例 模板函数的生成由编译系统隐式生成,其实质是函数 重载
说明: •参数表必须至少有一个参数说明,并且中的每个模板参数都必须在中得到使用。 •中的一项均由关键字class开始,表示 一种数据类型,在使用函数模板时必须将其实例化。 •函数模板的定义知识一种说明,不是一个具体的函数。 编译系统不为其产生任何执行代码。只有当编译器发 现一个具体的函数调用时,才根据具体的参数类型产 生相应的代码,这部分代码称为模板函数。它是函数 模板的一个具体实例。 •模板函数的生成由编译系统隐式生成,其实质是函数 重载
class a class B public: public: A(int y:x(y) B(int y): x(y) int fno return x*x*x; int fno return x*x*x;) private: private. int xs template : class B public: B( y: Xy Tfno return x**x; pl rivate. X
class A { public: A(int y):x(y) { } int fn() {return x*x*x;} }; private: int x; class B { public: B(int y):x(y) { } int fn() {return x*x*x;} }; private: int x; class B { public: B(T y):x(y) { } T fn() {return x*x*x;} }; private: T x; template ;
类模板 参数化的类称为类模板,它使得类中的某 些数据成员、某些成员函数的参数或返回值 能取任意类型。 定义格式: template class
类模板 --参数化的类称为类模板,它使得类中的某 些数据成员、某些成员函数的参数或返回值 能取任意类型。 template class { }; 定义格式:
模板类 类模板和它的实例 类模板模板类 关系 数学模型模型的实例 创建代码否 数据类型否 是是
模板类 类模板和它的实例 类模板 模板类 关系 数学模型 模型的实例 创建代码 否 是 数据类型 否 是