我已经阅读了一些有关静态函数和静态成员函数的内容。据我理解,如果一个函数被声明为静态,则该函数仅对其翻译单元可见,其他地方不可见。相反,静态成员函数是一种可以在不实例化其类的任何对象的情况下调用的函数(因此您可以像在名称空间中使用它一样)。
请注意,我所说的静态函数是指这样的内容:
请注意,我所说的静态函数是指这样的内容:
static int foo(int a, int b)
{
return a + b;
}
而我所指的静态成员函数是
struct MyClass
{
static int foo(int a, int b)
{
return a + b;
}
}
这是唯一的区别吗?还是在同一翻译单元内的可见性仍然是它们两个共同的特征?
this
指针)。它可以被看作是一个类函数而不是一个对象函数,并且对于所有具有其声明的翻译单元都可用。一个静态非成员(也称为命名空间范围)函数具有静态存储期和内部链接。 - Some programmer dude__declspec
指令显式地导出/导入它们。因此,即使对于静态成员函数,在Windows中它可能不可见,除非你这样做。 - AndyG