C++ 中变量+<模板类名>有什么用 为什么要这样做?
template<classT>structLinkNode{//链表结点类定义Tdata;//数据域LinkNode<T>*link;//链指针域LinkNode(Li...
template <class T>
struct LinkNode{ //链表结点类定义
T data; //数据域
LinkNode<T> *link; //链指针域
LinkNode(LinkNode<T>) *ptr =NULL{ //仅初始化指针成员的构造函数
link = ptr;
}
LinkNode(const T&item,LinkNode<T> *ptr=NULL){ //初始化数据和指针成员的构造函数
data = item;
link = ptr;
}
};
问:为什么LinkNode后面要带<T>? 它的作用是什么,不带的话区别是什么?
问:这里为什么要用const 常变量?
问:链表结点类不是只要存放数据域的指针就可以了么,定义一个空类型或者int都可以呀,为什么还要定义一个类模板?就算定义的是空类型或int型,表的通用性也不会影响呀,而且这样定义传进来数据域的指针不会比传进来数据域占用的内存要小么?
我对C++还不是很懂,理应来说这好像是数据结构的范畴,希望大大们细心解答,分没了,麻烦了,在此感谢,也希望有人留下些讨论的群什么的我还有好多问题,希望得到帮助,谢谢了 展开
struct LinkNode{ //链表结点类定义
T data; //数据域
LinkNode<T> *link; //链指针域
LinkNode(LinkNode<T>) *ptr =NULL{ //仅初始化指针成员的构造函数
link = ptr;
}
LinkNode(const T&item,LinkNode<T> *ptr=NULL){ //初始化数据和指针成员的构造函数
data = item;
link = ptr;
}
};
问:为什么LinkNode后面要带<T>? 它的作用是什么,不带的话区别是什么?
问:这里为什么要用const 常变量?
问:链表结点类不是只要存放数据域的指针就可以了么,定义一个空类型或者int都可以呀,为什么还要定义一个类模板?就算定义的是空类型或int型,表的通用性也不会影响呀,而且这样定义传进来数据域的指针不会比传进来数据域占用的内存要小么?
我对C++还不是很懂,理应来说这好像是数据结构的范畴,希望大大们细心解答,分没了,麻烦了,在此感谢,也希望有人留下些讨论的群什么的我还有好多问题,希望得到帮助,谢谢了 展开
1个回答
2015-01-11
展开全部
1、LinkNode<T>代表链表中的元素是一个抽象类型,在实例化是确定它的类型。可以看看C++ primer中的详细说法。
如果定义一个空类型或int类型的链表的话,如果需要一个其它的类型,你不是要重复写一份代码么?
2、const的作用是修饰传入的值是只读的,是作者不希望被修改的。仅作为计算或给其它变量赋值。
3、你不分配内存,链表的指针指向的数据域由谁来维护。最后一个问题有些不明白。
如果定义一个空类型或int类型的链表的话,如果需要一个其它的类型,你不是要重复写一份代码么?
2、const的作用是修饰传入的值是只读的,是作者不希望被修改的。仅作为计算或给其它变量赋值。
3、你不分配内存,链表的指针指向的数据域由谁来维护。最后一个问题有些不明白。
追问
我想问问指针不是统一的类型的么?还是我一直都弄错了
最后一个问题我想问的,假如我有一份学生的数据,我定义了个学生类,然后动态分配空间把学生数据输入进去,而链表 只需要传进来学生的数据域的指针和指针域,这样不就可以管理学生的信息么
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询