我是新來的全職C++編程,所以我試圖更好地理解各種細節中涉及的細微差別。使用模板的C++方法定義
我在一個小型項目中使用模板,主要是在學習時編寫代碼,而且我遇到了一些我不確定的事情。 Visual Studio的幫助我產生(在我的.cpp文件從我的.h文件)的代碼等價於:
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)
{
}
};
我的理解可能是錯誤的,但至少目前爲止,似乎兩者都可以編譯。這兩種風格之間是否有重大差異?我更喜歡第二個,因爲它對我來說更加乾淨明瞭。這些之間的細微差別是什麼?
注意:在顛簸的火車上打字時,如果格式問題或代碼不清楚(我從我嘗試過的內存中輸入它,它不是確切的),我很抱歉。
將模板定義放入源文件可能會有問題。您可以閱讀[this](http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file)問題以瞭解更多信息。 –
請參閱[爲什麼模板只能在頭文件中實現?](http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file) –
I可以推薦** CppCon 2016的演講:Arthur O'Dwyer「Template Normal Programming」** [Part1](https://www.youtube.com/watch?v=vwrXHznaYLA)和[Part2](https:// www.youtube.com/watch?v=VIz6xBvwYd8) –