首页 > 解决方案 > C++ 模板和内存分配

问题描述

我被问到真假问题:

“编译器在遇到函数模板定义时立即在内存中创建函数模板的实例”。

我对模板的理解是编译器在读取函数定义的时候会生成必要的代码。我不确定内存分配。这是真的还是假的?

标签: c++templatesmemorycompilation

解决方案


为了清楚起见:

模板不是代码。它是生成代码的秘诀。该代码是在其他代码第一次使用模板生成的代码时生成的。

因此,模板函数只有在其他代码使用它(调用它或获取它的地址)时才成为实际函数。

函数模板定义是如何在函数中编写代码的秘诀。

如果我们假设“内存”,提问者的意思是“程序代码所在的(可能是虚拟的)存储”,那么我想我会回答false

这是因为函数不是在编译器遇到函数模板定义时编写的,而是在其他代码第一次使用时编写的。


推荐阅读