2010-08-02 78 views
0

我無法回答與模板相關的問題。基本上,編譯器如何編譯模板。我用Google搜索,但沒有找到答案。有人可以幫我C++模板彙編

+3

你需要更具體些。 – 2010-08-02 10:45:54

+0

@尼爾我聽說模板編譯涉及面試官的兩個步驟,但我沒有得到它。 – Poorna 2010-08-02 16:22:57

回答

3

模板本身沒有編譯,模板的特定實例化。模板可以通過簡單地使用或通過明確實例化而實例化

例如,給出一個函數模板:

template<class T> void f() {} 

這只是一個功能,您可以使用一個模板

f<int>(); // compiler will instantiate a concrete f<int>() 

...導致特定的實例正在編譯。另外,您可以顯式實例吧:

template void f<int>(); 

但是原始模板從不編譯,它只是用來創建具體的實例。

+0

但如果我們沒有實例化任何具體實例,並且模板中有任何語法錯誤,則編譯器會引發錯誤。爲什麼這是 – Poorna 2010-08-02 16:20:53

+1

@siri模板沒有被編譯,但是在任何實例化發生之前它們被編譯器解析,這意味着它們必須在語法上是正確的。 – 2010-08-02 16:29:40

3

閱讀一本書,比如David Vandevoorde和Nicolai M. Josuttis的C++ Templates - The Complete Guide。除此之外,它解釋瞭如何使用它們,它也提供了一些關於它們如何實現的見解。