静态函数与静态成员函数C ++

问题描述 投票:0回答:1

我已经阅读了一些有关静态函数和静态成员函数的文章。根据我的理解,如果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;
   } 
}

这是唯一的区别吗?还是同一翻译单元中的可见性仍然是它们两个的共同特征?

c++ static-methods static-functions
1个回答
0
投票

您可以在this page上看到,static实际上有3种不同的含义,具体取决于使用的位置。如果在块作用域内(例如在函数内)使用它,则它将使变量在函数调用之间持久存在。如果将类方法声明为静态方法,则该方法不绑定到该类的特定实例。如果名称空间成员声明为静态,则它仅具有内部链接。

© www.soinside.com 2019 - 2024. All rights reserved.