小程序问题
template<class T>
class MyList
{
public:
T data;
MyList *next;
MyList<T> *next2;//它和上面的next有什么区别
};
[解决办法]
MyList *next; 是定义一个next链表
MyList<T> *next2; 是定义一个模板类的链表,T可以理解为template,即链表中的数据类型可以由用户自己定义
[解决办法]
MyList *next;//next为MyList的一个指针对象。
MyList<T> *next2; //next2表示为类模版指针对象
类模板
格式:template<typename 形参名,typename 形参名…> class 类名{}
类模板对象的创建:比有一个模板类A,则使用类模板创建对象的方法为A<int> m;在类A 后面跟上一个<>尖括号
并在里面填上相应的类型,这样的话类A 中凡是用到模板形参的地方都会被int 所代替。当类模板有两个模板形参
时创建对象的方法为A<int, double> m;类型之间用逗号隔开。
[解决办法]
这个实际上是一样的
按标准应该写成
template<class T>
class MyList
{
public:
T data;
MyList<T> *next; //只不过VS编译器做了一些优化,你不写那个<T>也能编译通过
MyList<T> *next2;
};