首页 > 编程知识 正文

程序框图知识点总结,高中地理答题模板及例题

时间:2023-05-05 11:58:24 阅读:169307 作者:4017

上一篇文章3359 blog.csdn.net/master _ Cui/article/details/111824064

四.班级模板局部特化

类可以局部特化。 仅指定部分模板参数,而不是所有模板参数。 由于局部特化保存了未指定的模板参数,因此请参阅局部特化的类模板仍然是个类模板,而不是类模板的实例

此外,只能对类模板进行局部特化,不能对函数模板进行局部特化

样品

template typename T1,typename T2 classtest { public : test () } { cout _ func _ endl; }; template typename Tclass testT,t{public:test(}{cout'testt,T'endl; }; template typename Tclass testT,int { public : test (} { cout ' testt,int'endl; }; template typename T1,typename T2class testT1 *,T2 * { public : test (} { cout ' test t1 *,T2 *'endl ); }; intmain(intargc,char const *argv[] ) {testint,float t1; testfloat,float t2; testfloat,int t3; testint *,float * t4; //testint,int t5; 返回0; }

在第35行中,class testT,int和class testT,t同时匹配,因此会发生二义错误

五.参与班级模板默认模板

类模板为模板参数提供默认实际参数,例如为mystack提供默认实现容器

template typename T,typename cont=dequetclassmystack { public 3360 mystack (mystack (constmystackt,CONT rval ) ); mystackT,contoperator=(constmystackt,CONT rval ); ~mystack (; voidpush(consttele ); void pop (; ttop(const; boolempty(const ) returnelem.empty ); }private:CONT elem; (; template typename T,typename CONTmystackT,cont : mystack ({ cout _ func _ endl; }template class T,typename CONTmystackT,cont : mystack (constmystackt,CONT rval ) :Elem ) rval.elem } cout。 typename CONTmystackT,CONT mystackT,cont :3360 operator=(constmystackt,contr val ) { cout _ fu } if (this=rvavate ) }this-elem=rval.elem; return *this; }template typename T,typename CONTmystackT,cont :至mystack ((cout _ _ func _ endl ); }template typename T,typename CONT void mystackT,cont :3360 push (const elem (cout _ _ func _ _ endl ); Elem.push_back(Elem; }template typename T,typename CONTvoid mystackT,cont :3360 pop ({ cout _ _ func _ endl; try {elem.pos_back (; }catch(out_of_range ) {cout'out_of_range'endl; }}template typename T,typename CONTT mystackT,cont :3360 top (const (cout _ _ func _ endl ); try {return elem.back (; }catch(out_of_range ) {cout'out_of_range'endl; }以上代码是mystack添加默认模板参数时的代码。 因为有两个模板参数,所以类外实现的成员函数也需要两个模板参数

如果使用具有缺省模板参数的类模板,并且未指定第二个参数,则第二个参数缺省为deque

intmain(intargc,char const *argv[] ) {mystackint si; si.push(10; mystackint,vectorint si2; si2 .推式(20; 返回0; }

参考

《C++ Template》

《C++ Primer》

欢迎大家交流评论。 作者的水平有限。 如有错误,请指出

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。