[问题] 为什么用template不用typedef呢??

楼主: kdok123 (小天)   2014-09-21 11:35:51
最近学习到了template
发现她每次宣告都需要再function前面加上template
可是我觉得它的功用跟typedef其实是一样的
但typedef定义了以后可以用在function里也可以用在main里的变量
template却只能用在function里
ex:
typedef int elemType;
template<calss T>
calss node{
};
int main()
{
node<int> head;
int data;//此时我要改template的型别这边也要改一次
return 0;
}
但如果用typedef我只需要把变量都改成elemType,接着改elemType的型别就好
结论就是:不太知道template的好处在哪里...
有人可以帮我分析一下template的好处吗???
作者: bibo9901 (function(){})()   2014-09-21 11:46:00
你没用过vector<int>, vector<double>等等吗 @@
作者: EryngiiYang (鲍菇杨)   2014-09-21 11:59:00
说实话我看不太懂这份code想表达什么......template是泛型程式设计重要的一环 举例来说 STL里面的sort 可以接受不同的资料型态做排序(只要资料有可比性) 无须修改程式码就可以解决不同物件的问题
作者: carylorrk (carylorrk)   2014-09-21 12:15:00
你跟我学的是同一个 C++ 吗...看的是哪本书啊XD?
楼主: kdok123 (小天)   2014-09-21 12:23:00
sorry可能我表达有问题>< 因为我现在写的都是单一cpp的小程式,可能我之后碰到大程式就会了解template的好处了吧!
作者: diabloevagto (wi)   2014-09-21 12:39:00
http://ideone.com/AoJs9m 不用为了 int 跟 double各自实做同样的功能
作者: holydc (のヮの)   2014-09-21 14:21:00
针对你说的情况,你还是可以搭配使用呀http://ideone.com/oLDDSp
作者: Zephyr750 (红莲西风750)   2014-09-21 19:05:00
请用你的typedef实作一下node<double>和node<int>,而且还要同一份code唷!template就可以....
楼主: kdok123 (小天)   2014-09-21 19:29:00
恩恩我了解了!! 其实我根本没搞清楚他们的用途...混用这两个其实还满方便的! 谢谢大家的回答!
作者: Killercat (杀人猫™)   2014-09-21 22:37:00
其实比较常跟typedef混淆的应该是#define因为不少情况下 两个可以达成类似的效果
作者: Zephyr750 (红莲西风750)   2014-09-21 23:00:00
Effective C++会建议尽量不要使用前置处理器...^^"
作者: Killercat (杀人猫™)   2014-09-22 00:58:00
我也满反对#define乱飞的... orz 很麻烦的东西
作者: chienweichih ((゚д゚))   2014-09-22 11:56:00
你的class打错了

Links booklink

Contact Us: admin [ a t ] ucptt.com