欢迎来到天天文库
浏览记录
ID:48784405
大小:134.50 KB
页数:8页
时间:2020-01-24
《c++类模板.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第九章类模板1.引言例子:_1字符栈例子:_2用typedef实现代码的通用“type”在一个程序中只能代表一种类型.如果在一个程序中有多个类型的栈,比如character_stack,int_stack,double_stack等,此时就不可能使用typedef实现代码的重用。类的模板提供了一种简单的方式实现代码的重用,代价是增加了时空开销。2.类的模板Classtemplate类模板创建的不是一个有具体成员类型的类,这些成员的类型用类型参数Type(typearguments)代替,对模板实例化时再给类型参数传递实际的
2、类型。关键字class表示“Type”是一个类型参数,可由用户任意命名,也可用typename代替,类模板实例化时可以用任意已定义的类型名代替Type,包括所有的内部类型或自定义类型。类模板的成员函数自动成为模板函数,所以在类模板成员函数在类外定义时都有template;“Type”的作用域只局限在类模板的声明中,在模板成员函数的实现中可重新命名,但在同一个成员函数中类型参数名要一致。3.类模板成员函数的定义4.类模板构造函数和析构函数的定义注意:Stack::不能写成Stack::。类模
3、板的实例化是在类模板名的后面跟<具体的类型名>Stackis(50);//整型栈,长度为50Stackcs(200);//字符栈,长度为200类模板的实例化类似于函数的调用,创建模板类时,将具体的类型代替类型参数,产生一份具体的类的代码,有多少个不同类型的模板类,就会产生多少分不同的代码,所以模板类实现代码重用的同时增加了时空开销。类模板中也可以有多个类型参数,也可以有具体的类型:template4、_3atemplateclassStack5.类模板的实例化6.模板函数模板类一旦产生,它与一般的类的使用是相同的,它的对象也可用作函数参数,但此时的函数不是模板函数,不具有通用性。voidDebugPrint(Stack&s);//形参是一个整型栈如果不希望出现表示模板的<>,可以用typedef给模板类定义一个别名,如:typedefStackIntStack;voidDebugPrint(IntStack&s);模板函数具有通用性.template//模板参数列表voidDe5、bugPrint(Stack&s);//函数参数列表
4、_3atemplateclassStack5.类模板的实例化6.模板函数模板类一旦产生,它与一般的类的使用是相同的,它的对象也可用作函数参数,但此时的函数不是模板函数,不具有通用性。voidDebugPrint(Stack&s);//形参是一个整型栈如果不希望出现表示模板的<>,可以用typedef给模板类定义一个别名,如:typedefStackIntStack;voidDebugPrint(IntStack&s);模板函数具有通用性.template//模板参数列表voidDe
5、bugPrint(Stack&s);//函数参数列表
此文档下载收益归作者所有