c++ - C++ 模板和内存分配
问题描述
我被问到真假问题:
“编译器在遇到函数模板定义时立即在内存中创建函数模板的实例”。
我对模板的理解是编译器在读取函数定义的时候会生成必要的代码。我不确定内存分配。这是真的还是假的?
解决方案
为了清楚起见:
模板不是代码。它是生成代码的秘诀。该代码是在其他代码第一次使用模板生成的代码时生成的。
因此,模板函数只有在其他代码使用它(调用它或获取它的地址)时才成为实际函数。
函数模板定义是如何在函数中编写代码的秘诀。
如果我们假设“内存”,提问者的意思是“程序代码所在的(可能是虚拟的)存储”,那么我想我会回答false。
这是因为函数不是在编译器遇到函数模板定义时编写的,而是在其他代码第一次使用时编写的。