如果一个C++模板从未被引用,它会使用内存吗

Does a C++ template use memory if it is never referenced?

本文关键字:引用 内存 一个 C++ 如果      更新时间:2023-10-16

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

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

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

没有。

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

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