类模板为什么要特化

a827461712 2013-06-02 07:35:08
现在正在看C++ templates,看到类模板特化这一节,有点疑惑。比如有如下一个类模板

template<typename T>
class className{
...
};

那么就可以按如下形式是以它:className<int> a;
既然已经可以用了,这跟先将模板特化再使用有什么区别呢?
...全文
197 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
derekrose 2013-06-02
  • 打赏
  • 举报
回复
大家都有提问的权利,也有自主学习的权利。帮顶
zaixiankaifa 2013-06-02
  • 打赏
  • 举报
回复
这样可以提高效率
walker沃克 2013-06-02
  • 打赏
  • 举报
回复
首先就是不可能写出对所有实例化的类型都合适的模版,某些情况下通用的模块对有些类型可能完全是错误的;基于上面的原因所以会时常需要进行模块特化操作。

template <typename T>
int compare(const T & x, const T & y)
{
    if (x < y) return -1;
    if (y < x) return 1;
    return 0;
}
例如这个例子,对于C字符串,比较的结果就完全是错误的
taodm 2013-06-02
  • 打赏
  • 举报
回复
另外,这本书看懂了也是浪费生命。
taodm 2013-06-02
  • 打赏
  • 举报
回复
除了《模板元编程》,其它哪本都比这个基础。 如果看不懂《stl源码剖析》就别浪费生命强看这一本。
a827461712 2013-06-02
  • 打赏
  • 举报
回复
引用 2 楼 taodm 的回复:
换一本基础点的书,看懂了再来啃这本搞脑筋的书吧。
讲模板的也就那么几本书,哪本基础?
xiaolomg 2013-06-02
  • 打赏
  • 举报
回复
某种类型需要特别处理,函数模板提供一个统一的入口,酱紫不是灰常好吗
taodm 2013-06-02
  • 打赏
  • 举报
回复
换一本基础点的书,看懂了再来啃这本搞脑筋的书吧。
bluewanderer 2013-06-02
  • 打赏
  • 举报
回复
比如T是int和float的时候你希望用不同的方法处理。比如你想用printf打印T x,那么如果T是int,就应该是printf("%d", x),如果T是float就应该是printf("%f", x)

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧