种树的最佳时间是十年前,其次是现在。
关注我一起努力学习吧!
学Bug=学霸哥(学霸中的一个Bug)
今天学习任务是完成第三章剩下的内容“函数模板”,内容并不多,也不难理解,但编译过程中出现了错误,有点麻烦。
1、引入函数模板:
①将函数重载中逻辑功能完全一样的函数,区别仅仅是处理数据类型不同,把它们的操作可以抽象化,书中还是以比较大小max函数为例;
②一般使用T作为标识符来标识类型参数,在调用函数模板时,模板的参数是由函数的参数推断出来的;
③例3-14演示函数模板程序,首次编译就出现了错误如下图1所示,调用重载有歧义,可以是冲突吧,改了max的函数名就可以编译成功,具体原因还不清楚,例3-17也出现了同样的错误;
④例3-15、3-16演示了使用函数重载及函数模板的对比,很明显函数模板的功能强,直接简化了程序,得到的是同样的结果,如下图3-4所示。
2、函数模板的参数:
①模板参数用尖括号显式规则表示,C++专门定义了一个仅仅用在模板中的关键字typename代替class,例3-17如下图5所示;
②对于字符串“ABC”和“ABD”的大小比较,两个例题中的答案都是ABC>ABD,与书中的结果相反,查了一下还不知道什么情况?
图1.编译错误
图2.例3-14
图3.例3-15
图4.例3-16
图5.例3-17
加油!
坚持!
领取专属 10元无门槛券
私享最新 技术干货