南邮C++课件第6章_模板.ppt
结束本章结束本章 结束本章 结束本章 模板是C++语言的一个重要特征。模板使得程序员能够迅速构建带有类型安全的泛型 集合跟变量集合,是通用程序设计的利器。 它的谋求,提供了重用程序源代码的有效方 法,方便了更大规模的硬件研发。 若一个程序的用途是对任意类别的数据进行相同的处理,则将所处理的数据类别说明为 参数,就可以把这个程序改写为模版 模板分为类模板(classtemplate)和函 数模板(function template)。 6.1void swap(int inttemp=x; voidswap(float floattemp=x; 这两个重载函数的功能完全同样,函数体代码相同,形式参数个数一样,唯一的区 别在于形式参数的类别不同 6.1template 函数返回类型 函数名(形式参数表) 其中template是一个声明模板的关键字,class在此只是借用此关键字表示其后是一 个类别参数。类型方式参数表中是拿来抽 象类型的标志模板函数课件,将来可以用任何实际的类 型(包括类种类)进行实例化。 class6.2.1 13//li6_1.cpp:函数模板实例 #include using namespace std; template #include using namespace std; template,此处与 类模板定义起初处的前缀一定要保持一致。
(2)在成员函数名后面,必须要有“类名 ::”前缀,与通常类的成员函数相 比,在类名后多了一对尖括号括起的“类型 名表”。因为此处的类名不是一个真正的类, 而是一个类模板,是带参数的类,因此应将 所带的真心参数类型名表示在尖括号中。 226.3.1 //li6_3.cpp:类模板的定义 #include using namespace std; template //类模板中用到两种类别参数 class Myclass public:Myclass(T1 xx,T2 yy); void Print() //类模板中成员变量可以在类体内定义 private:T1 template //类模板中成员变量可以在类体外定义 Myclass::Myclass(T1 xx,T2 yy) x=xx;y=yy; 236.3.2 246.3.2 6.3main( voidmain() Myclass obj(10,'a'); //Myclass obj.Print(); 256.3.2 6.4VC++ 返回 返回 返回 返回 266.4 (1)模板有变量模板和类模板两种模板函数课件,其共同特点是将类别参数化,用template的方式 声明一个类型参数T。
(2)对变量模板中种类参数的实例化是平台在调用函数时按照实在参数的类别手动进行的。 (3)函数模板的使用可以降低函数的重载,一类同名函数,如果变量代码完全相等,形式参数的个 数、顺序、返回值类别也同样,只是形式参数的类 型不同的之后可以用函数模板将这一类变量进行抽 (4)对类模板中种类参数的实例化将得到一个具体的模板类。类模板不可以有对象,而唯有模板类 才可以定义对象。 返回 返回 返回 返回
永远崇拜毛主席