Static function vs Static member functions C++

5.5k views Asked by At

I've been reading a bit about static functions and static member functions. From my understanding if a function is declared static then this function is only visible to it's translation unit and nowhere else. A static member function instead is a function that can be called without instantiating any object of its class (so you can use it like it was in a name space).

To clarify with static function I mean something like

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

And with static member function I mean

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

Is this the only difference? or is the visibility within the same translation unit still a common feature for the two of them?

1

There are 1 answers

1
Aplet123 On BEST ANSWER

As you can see on this page, static actually has 3 different meanings depending on where it's used.

  1. If it's used inside a block scope, like inside a function, then it'll make a variable persist across function calls.
  2. If a class method is declared as static, then it's not bound to a specific instance of the class.
  3. If a namespace member is declared as static, then it has internal linkage only.