gpt4 book ai didi

c++ - 免费模板函数是否需要静态和内联?

转载 作者:行者123 更新时间:2023-12-04 13:09:22 25 4
gpt4 key购买 nike

给定这段代码

// In header file
template<typename T>
inline static void my_func(T var)
{
std::cout << var << std::endl;
}

// Used in many cpp files:
void some_function()
{
my_func(1);
my_func("test");
}

我刚刚将我的免费功能“升级”为模板。它以前是静态的和内联的。但现在它是一个模板,如果内联和静态仍然适用,我不是 100% - 我的猜测是他们......但我不是 100% 关于模板生成机制(即它是否将它复制/粘贴到每个翻译单元? )

最佳答案

默认情况下,所有函数模板都是内联,因此不需要该关键字。

在将 my_func 转换为模板之前,static 关键字可能是不必要的,现在可能仍然是。将自由函数标记为 static 会为其名称提供内部链接,但由于它是在 header 中声明的,因此此处不会完成太多工作。任何翻译单元都可以简单地 #include 您的 header ,并且无论如何都可以访问该功能。 static 函数在 .cpp 文件中更有用,它主要用于将函数标记为内部函数并防止其他翻译单元调用它。

关于c++ - 免费模板函数是否需要静态和内联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67300925/

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