C 方法定义具有模板

C++ Method definition with templates

本文关键字:方法 定义      更新时间:2023-10-16

我是全职C 编程的新手

我正在使用一个小型项目中的模板,主要是在我学习的过程中构成代码,并且遇到了一些我不确定的事情。Visual Studio帮助我生成(在我的.h文件中的.cpp文件中)代码等同于此:

template<class T>
PriorityQueue<T>::ClimbDownHeap(const int currentNodeIndex)
{
}
template<class T>
PriorityQueue<T>::GetRightNodeIndex(const int currentNodeIndex)
{
}

我的印象是,这同样有效:

template <class T>
class PriorityQueue
{
public:   
    ClimbDownHeap(const int currentNodeIndex)
    {
    }
private:
    GetRightNodeIndex(const int currentNodeIndex)
    {
    }
};

我的理解可能是错误的,但是至少到目前为止,这似乎都会汇编。这两种样式之间有显着差异吗?我更喜欢第二个,因为它对我来说更加干净和清晰。这些之间的细微差别是什么?

注意:在颠簸的火车上键入此内容,因此我对格式化问题或不清楚代码表示歉意(我是从我尝试过的记忆中键入的;这不是准确的)。

如果要使用其他文件中的模板类,则必须将模板代码放入标题中。有效地放入源文件使其成为私人(通过使链接不可能)。

正如詹姆斯在评论中提到的那样,请阅读此处的详细说明和示例。