我已经阅读了一些有关静态函数和静态成员函数的文章。根据我的理解,如果function声明为静态,则此函数仅对它的翻译单元可见,而在其他任何地方均不可见。静态member function是可以在不实例化其类的任何对象的情况下调用的函数(因此您可以像在名称空间中一样使用它)。
用静态函数来澄清,我的意思是类似的东西
static int foo(int a, int b)
{
return a + b;
}
并且是静态成员函数
struct MyClass
{
static int foo(int a, int b)
{
return a + b;
}
}
这是唯一的区别吗?还是同一翻译单元中的可见性仍然是它们两个的共同特征?
您可以在this page上看到,static
实际上有3种不同的含义,具体取决于使用的位置。如果在块作用域内(例如在函数内)使用它,则它将使变量在函数调用之间持久存在。如果将类方法声明为静态方法,则该方法不绑定到该类的特定实例。如果名称空间成员声明为静态,则它仅具有内部链接。