template <class T> 的用法!

2024-11-16 09:16:33
推荐回答(2个)
回答1:

楼主你好!

当然要写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++》
不知楼主还有啥不懂得,可以给我留言~~我们一起讨论

回答2:

不要,template表示模板类,定义的时候才需要加template,使用时只要Node就行了