读书人

模版有关问题

发布时间: 2012-03-24 14:00:46 作者: rapoo

模版问题
问题1 编译器可以直接通过,,但这些写法是否都是合法的??

显示实例化
template void Swap(double &,double &)
template void Swap <double> (double &,double &)

显示具体化
template <> void Swap(double &,double &)
template <> void Swap <double> (double &,double &)


问题2:

template <typename T> //T :常规变量,指针变量,引用,类
class sample
{
public:
sample(){cout < < "常规模版 ";}
};


template <typename T> class sample <T*> //这么写合法吗?
{
public:
sample(){cout < < "指针模板 ";}
};


template <typename T> class sample <T&> //这么写合法吗?
{
public:
sample(){cout < < "引用模板 ";}
};


template <typename T> class sample <T*>
template <typename T> class sample <T&> 的写法书上并没有写出来 ,我自己乱试出来的 汗~~~~~~~
因为c++很多不规范也不会出现编译错误 所以想问下这样写符合规则吗?


[解决办法]
些法都是合法的,一面的double和方括都可以省略,模板可以自推演出。
二面的种法是偏特化。

读书人网 >C++

热点推荐