读书人

c++模板解决思路

发布时间: 2013-03-12 11:19:35 作者: rapoo

c++模板
问题1:
c++中模板参数可不可以有如下写法

template<calss T1*>
class MyClass
{
};

问题2:
template<class T,int intger=1000>
calss MyClass
{
};
中intger算不算缺省的模板参数

问题3:
template<class T,calss T2=int>
calss MyClass
{
};
中T2算不算缺省的模板参数

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;
}

读书人网 >C++

热点推荐