如果从未引用过C ++模板,它是否会使用内存?

时间:2013-06-25 18:55:59

标签: c++ templates memory-management

假设我声明了一个模板,但从未在C ++中引用它。编译器是否在可执行文件中对它做了什么?它会占用任何进程内存吗?

2 个答案:

答案 0 :(得分:13)

不,不会为从未实例化的函数模板生成代码。此外,不会为从未调用的类模板的非模板成员函数生成代码。

特别是,可执行文件的大小不会更大,也不会出现任何运行时开销。

答案 1 :(得分:4)

不,不。

模板类和函数不是实际的类或函数:它们是编译器的指示,用于生成某些类型的类和函数。当您引用模板时,编译器使用模板来确定如何生成源代码,并为模板的每个不同参数化编译生成的代码。

使用模板的唯一开销是额外的编译时间,对于20世纪80年代以后任何时候构建的任何计算机都没什么大不了的。