user8469759
user8469759

Reputation: 2732

Static function vs Static member functions C++

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?

Upvotes: 7

Views: 9061

Answers (1)

Aplet123
Aplet123

Reputation: 35560

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.

Upvotes: 12

Related Questions