首页 > 编程知识 正文

c语言课程设计的模板,c++模板是什么

时间:2023-05-06 16:05:24 阅读:169335 作者:4409

类模板的使用方法与函数模板基本一致templatetypenametclassperson { public : person (tid,T Age ) {this-mID=ID; this-mAge=Age; } friendvoidprintmessage (personp ) cout ' thestudent ' sidis ' p.mid ' thea geis ' p.mage endl; }private:T mID; T mAge; (; 但是,在调用模板和实例化对象时,模板函数可以自动推导出类型,并且类模板必须明确指定类型intmain((personintp ) 130、120 ) //在此明确地将t指定为int类型printmessage(p )。 }运行结果: thestudent ' sidis 130 thea geis 120

模板类派生普通类模板类的派生方法与普通类不同。 因为类区域定义对象,所以对象必须编译并分配内存,所以派生类类型class student : publicpersonint {//代码}//如上所述,将派生类类型定义为整数类型的模板类派生模板类templatetypenametclassteacher : publicpersont {//代码}类头文件和源文件# include ' person.h ' templatetype naty /首先标识符persont:3360person(tage )//此处也包含参数this-mAge=age; }templatetypename T //首先标识符void PersonT:Show () ) /此处也包含参数cout'Hello'endl; }易出错点调用与上面的头文件和源文件分开编写的类模板时,编译器可以正常编译,但无法正常运行。 调用步骤://头文件person.h # includeiostreamusingnamespacestd; templatetypenametclassperson { public : person (tid ); void show; T mID; (; /-----------------/源文件person.CPP # include ' peer templatetypenametvoidperson 33603360 show () (------------------主文件main.CPP # includeiostrees int main () Personintp p.show (; 返回0; }错误的原因与模板的实现机制和C的编译机制有关。 在C的编译过程中,每个文件都是独立编译的。 如上所述,在编译主函数时,找到了一个函数调用,但未在当前文件中实现。 在这种情况下,将在函数位置生成符号,并等待后续文件的编译完成,然后在Person.cpp的函数模板中只对函数模板进行二次编译。 没有具体的呼叫。 (总是t型,没有被实例化为int、float…等类型并实际调用。 模板的实现机制经过二次编译,通过调用生成具体的函数解析方法。 将主文件#includePerson.h更改为#includePerson.cpp与将整个主文件复制到主文件相同,因此要执行此操作,请将. cpp文件更改为. hpp 可以由类模板和静态成员的静态限定的变量通常由同一实例化类型的对象所有,而不是# includeiostreamusingnamespacestd所有(; //类外初始化templatetypenametintnumt :3360 a=0; int main () { Numint p1,p2,p3; Numchar p4、p5、p6; p1.a=10; p4.a=100; cout p1.a ' ' p2.a ' ' p3.a endl; cout p4.a ' ' p5.a ' ' p6.a endl; 返回0; }结果10 10 10100 100 100显示int类型模板共享a变量,char类型共享另一个变量

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