2010-08-02 83 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。除此之外,它解释了如何使用它们,它也提供了一些关于它们如何实现的见解。