gpt4 book ai didi

c++ - 模板的符号表条目

转载 作者:行者123 更新时间:2023-11-30 02:46:27 24 4
gpt4 key购买 nike

我对模板函数有疑问。如果我写一个像

这样的普通函数
int function1(int x);
int function1(int x, int y);

将为 function1 创建两个符号表条目。每个条目代表每个重载函数。

在模板函数的情况下,究竟发生了什么以及编译器如何处理它。

template<class X>
int function1(X a);

模板函数有多少个符号表条目?

最佳答案

C++ 中没有“模板函数”这样的东西。有“功能模板”,即用于创建功能的模板(或蓝图)。一旦您接受了这一点,答案就会变得更容易发现。

模板纯粹是一种编译构造。从模板实例化的每个函数(自然地)是一个函数,因此它将有自己的符号。

就像 inline 函数一样,如果同一个函数(= 使用同一组模板参数)在不同的翻译单元(= 不同的 .cpp 文件)中从模板实例化,则编译器和链接器必须确保它们合并为一个,因为它们的地址必须相同。他们如何做是他们的实现细节;该标准只是要求他们必须这样做。恐怕我不知道如何做到这一点的技术细节,所以我无法提供示例。

关于c++ - 模板的符号表条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23561183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com