c++模板
问题1:
c++中模板参数可不可以有如下写法
template<calss T1*>
class MyClass
{
};
问题2:
template<class T,int intger=1000>中intger算不算缺省的模板参数
calss MyClass
{
};
问题3:
template<class T,calss T2=int>中T2算不算缺省的模板参数
calss MyClass
{
};
c++模板中的 非类型模板参数 算不算模板的缺省参数
[解决办法]
1不行,2,3你说对了。
[解决办法]
1不行,不过有类似的形式做偏特化可以遇到,太久没用++,看看对不对:
[root@vps616 cpp]# ./main
T
T *
int *
T, integer
T, T1
[root@vps616 cpp]# cat main.cpp
#include <iostream>
#define DEBUG(cls, info) public: cls() { do { std::cout << info << std::endl; } while(0); }
template <class T>
class MyClass1
{
DEBUG(MyClass1, "T")
};
template <class T>
class MyClass1<T *>
{
DEBUG(MyClass1, "T *")
};
template <>
class MyClass1<int *>
{
DEBUG(MyClass1, "int *")
};
template <class T, int integer = 1000>
class MyClass2
{
DEBUG(MyClass2, "T, integer")
};
template <class T, class T1 = int>
class MyClass3
{
DEBUG(MyClass3, "T, T1")
};
int main(int argc, char *const argv[])
{
MyClass1<int> c1;
MyClass1<double *> c11;
MyClass1<int *> c12;
MyClass2<int> c2;
MyClass3<int> c3;
return 0;
}