template<typename T>
class className{
...
};
那么就可以按如下形式是以它:className<int> a;
既然已经可以用了,这跟先将模板特化再使用有什么区别呢?
9 个解决方案
#1
比如T是int和float的时候你希望用不同的方法处理。比如你想用printf打印T x,那么如果T是int,就应该是printf("%d", x),如果T是float就应该是printf("%f", x)
#2
换一本基础点的书,看懂了再来啃这本搞脑筋的书吧。
#3
某种类型需要特别处理,函数模板提供一个统一的入口,酱紫不是灰常好吗
#4
讲模板的也就那么几本书,哪本基础?
#5
除了《模板元编程》,其它哪本都比这个基础。
如果看不懂《stl源码剖析》就别浪费生命强看这一本。
如果看不懂《stl源码剖析》就别浪费生命强看这一本。
#6
另外,这本书看懂了也是浪费生命。
#7
首先就是不可能写出对所有实例化的类型都合适的模版,某些情况下通用的模块对有些类型可能完全是错误的;基于上面的原因所以会时常需要进行模块特化操作。
例如这个例子,对于C字符串,比较的结果就完全是错误的
template <typename T>
int compare(const T & x, const T & y)
{
if (x < y) return -1;
if (y < x) return 1;
return 0;
}
例如这个例子,对于C字符串,比较的结果就完全是错误的
#8
这样可以提高效率
#9
大家都有提问的权利,也有自主学习的权利。帮顶
#1
比如T是int和float的时候你希望用不同的方法处理。比如你想用printf打印T x,那么如果T是int,就应该是printf("%d", x),如果T是float就应该是printf("%f", x)
#2
换一本基础点的书,看懂了再来啃这本搞脑筋的书吧。
#3
某种类型需要特别处理,函数模板提供一个统一的入口,酱紫不是灰常好吗
#4
讲模板的也就那么几本书,哪本基础?
#5
除了《模板元编程》,其它哪本都比这个基础。
如果看不懂《stl源码剖析》就别浪费生命强看这一本。
如果看不懂《stl源码剖析》就别浪费生命强看这一本。
#6
另外,这本书看懂了也是浪费生命。
#7
首先就是不可能写出对所有实例化的类型都合适的模版,某些情况下通用的模块对有些类型可能完全是错误的;基于上面的原因所以会时常需要进行模块特化操作。
例如这个例子,对于C字符串,比较的结果就完全是错误的
template <typename T>
int compare(const T & x, const T & y)
{
if (x < y) return -1;
if (y < x) return 1;
return 0;
}
例如这个例子,对于C字符串,比较的结果就完全是错误的
#8
这样可以提高效率
#9
大家都有提问的权利,也有自主学习的权利。帮顶