Стати c функция против Стати c функции-члены C ++ - PullRequest
0 голосов
/ 20 апреля 2020

Я немного читал о функциях stati c и функциях stati c. Насколько я понимаю, если функция объявлена ​​как stati c, то эта функция видна только ее единице перевода и больше нигде. Stati c функция-член вместо этого представляет собой функцию, которую можно вызывать без создания экземпляра какого-либо объекта его класса (так что вы можете использовать его так, как это было в пространстве имен).

To уточнить с помощью функции stati c Я имею в виду что-то вроде

static int foo(int a, int b)
{
   return a + b;
}

А с функцией-членом stati c я имею в виду

struct MyClass
{
   static int foo(int a, int b)
   {
      return a + b;
   } 
}

Это единственная разница? или видимость внутри одного и того же блока перевода все еще является общей чертой для них обоих?

1 Ответ

3 голосов
/ 20 апреля 2020

Как вы можете видеть на этой странице , static на самом деле имеет 3 различных значения в зависимости от того, где оно используется. Если он используется внутри области видимости блока, как внутри функции, тогда переменная будет сохраняться при вызовах функций. Если метод класса объявлен как stati c, то он не привязан к конкретному c экземпляру класса. Если член пространства имен объявлен как stati c, он имеет только внутреннюю связь.

...