假设我声明了一个模板,但从未在C ++中引用它。编译器是否在可执行文件中对它做了什么?它会占用任何进程内存吗?
答案 0 :(得分:13)
不,不会为从未实例化的函数模板生成代码。此外,不会为从未调用的类模板的非模板成员函数生成代码。
特别是,可执行文件的大小不会更大,也不会出现任何运行时开销。
答案 1 :(得分:4)
不,不。
模板类和函数不是实际的类或函数:它们是编译器的指示,用于生成某些类型的类和函数。当您引用模板时,编译器使用模板来确定如何生成源代码,并为模板的每个不同参数化编译生成的代码。
使用模板的唯一开销是额外的编译时间,对于20世纪80年代以后任何时候构建的任何计算机都没什么大不了的。