c++ - 类外的静态函数

标签 c++

谁能告诉我在类之外声明静态函数的目的是什么?这2有什么区别?在这种情况下使用静态有什么好处吗?

static void someRandomFunction();

int main()
{
    someRandomFunction();
    return 0;
}

void someRandomFunction();

int main()
{
    someRandomFunction();
    return 0;
}

最佳答案

在命名空间范围内,static 给出了一个名称​​internal links,这意味着它只能在包含定义的翻译单元内访问。没有static,它有外部链接,并且可以在任何翻译单元中访问。

因此,在编写仅用于本单元的函数时,您将使用 static(或者,一个未命名的命名空间);内部链接意味着其他单元可以使用相同的名称定义不同的功能而不会引起命名冲突。

非静态函数(以及一般的全局名称)最好在 header 中声明,以确保使用它们的每个翻译单元都获得相同的声明。

关于c++ - 类外的静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25724787/

相关文章:

c++ - 如何将复杂的 json 转换为我可以在 C++ 中使用的东西

c++ - 将文本编辑的滚动条移至顶部

c++ - 在 virtual box 上保存 VIM 的设置

c++ - 如何使用 decltype 访问依赖类型?

c++ - gammu 1.38.5 使用 native_pgsql 编译,--找不到 PostgreSQL

c++ - 模块化意大利面条代码

c++ - 在 "parameter"语句的第二个 'for' 中声明的对象的生命周期

c++ - 仅编译1个cpp文件时出现问题: “make: *** No rule to target '所需的 'executable' build/main.o。停止。”

对象指针的 C++ vector - max_size()

c++ - Boost.Spirit、Nabialek 技巧和错误处理