Static Member Variables

Rember class attributes?

OO: class attributes <-> C++: static member variables

OO: object instance attributes <-> C++: non-static member variables.

  • Every object instance has its own set of object instance attributes

  • All object instances share the same class attributes.

In C++ we use the "static" keyword.

Example:

class MakesNoSense {
private:
  static int counter;
  int someVar;
public:
  void doSomething();
  int getCounter();
}
...
void MakesNoSense::doSomething(int a)
{
  counter = a;
  someVar = a;
}
...

MakesNoSense *a = new MakesNoSense(), *b = new MakesNoSense();
a->doSomething(1);
b->doSomething(2);

cout << a->getCounter();  // Discussion: What will this print?

delete a; delete b;