2014-09-01 63 views
3

Im這種卡在這個。我在一本書中讀到,我們可以使用函數模板創建泛型函數,但在其他地方,作者稱爲泛型函數,函數模板。女巫是適當的,例如:函數模板或Gereric函數是正確的術語?

template <class T> void printSmt(T x){} 

在這裏printSmt被稱爲泛型函數或函數模板?

而另一個問題是:x函數參數列表中的printSmt是泛型還是模板參數?

編輯:即時爲我的學校寫一些文件。如果有可能根據C++參考給我一個答案。

+5

C++標準中沒有「通用函數」這樣的術語。 「通用」一詞更多地涉及通常涉及C++模板的編程風格。 – 2014-09-01 08:59:20

+2

由於函數模板不是函數,所以我很不情願將函數模板稱爲「泛型函數」。這不是一個功能。 (相比之下,模板函數是一個函數。)在數學中,有時會出現一種奇怪的資格反轉(更合格的不是特定的),但是這不衛生,我們不需要拖入編程。 – 2014-09-01 09:01:02

+0

'x'是函數的形式參數,就像在非模板函數中一樣。它的類型是'T',模板參數。我聽說過C++中沒有「泛型類型」。 (順便說一句:當你說「我讀了一本書」時,認爲包含書的標題和作者是一種很好的做法。) – molbdnilo 2014-09-01 09:15:14

回答

4

C++標準將其稱爲函數模板。術語通用函數更多地用於其他面向對象的語言(例如,在LISP中,這些函數具有相同的名稱)。 Java使用泛型類型來實現泛型編程的最小途徑。

x是函數參數。 T是模板參數。 printSmt<int>()int是模板參數。

+0

非常感謝。這正是我所期待的。 – FrozenFrog 2014-09-01 09:22:22