作业帮 > 综合 > 作业

template 的用法!

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/28 23:52:37
template 的用法!
#include
template
class Node
{
private:
Node *next;
public:
T data;
Node(const T& item,Node* ptrnext=NULL);
void InsertAfter(Node* p);
Node* DeleteAfter();
Node* NextNode();
};
template
Node::Node(const T& item,Node* ptrnext=NULL)
{
data=item;
next=ptrnext;
}
temolate
Node* Node::NextNode()const
{
return next;
}
每次类的实现前面都要写 template
如果是.请问为什么!
我只是看书上是这么写的!
那如果是在多文件中呢.需不需要这样?
template 的用法!
楼主你好!
当然要写template 了.
例如要写成员函数 Node* NextNode()const;的实现
那么自然要写成
Node* Node::NextNode()const//注意加上Node::作为域的限
//制,这样就区别于全局函数.标志着它是Node的成员函数
{
return next;
}
但是这时候注意这个“T”是无法识别的,编译器根本不知道他是什么.
所以完整要写成
temolate //告诉编译器T是一个(模板)类型
Node* Node::NextNode()const
{
return next;
}
所以每次类的实现前面都要写 “template ” !
还有多文件的时候,理论上和单文件的时候没有任何区别.
但是注意:模板类或者函数最好不要写成多文件,因为这种“分离模型”虽然是“标准”所承认的,但是因为技术原因至今没有一个编译器能完美的支持模板的多文件!
顺便说一下,即使是C++的标准库都是把模板的定义和申明写在一个文件里的.
我想楼主问的我都说完了,如果还有不懂得,楼主可以参考《C++ Template》,它解释了C++关于模板的所有问题.
还有,这类关于语义的问题楼主最好参阅《The Design and Evolution of C++》
不知楼主还有啥不懂得,可以给我留言~~我们一起讨论