I'm reviewing some code and am new to C++. What are the advantages and/or disadvantages of a SW architecture where all code is encapsulated in classes which can only have a single instance. This instance is retrieved by each class which uses it. I'll try to give short example below:
//classa.h
class A
{
public:
  void foo ();
  ~A(); //Destructor
  static A& getInstance();  //Retrieve Only Instance
protected:
  A();  // Protected Constructor
};
//classa.cpp
#include "classa.h"
A::A() {}; //Constructor
A::~A() {}; //Destructor
A& A::getInstance()
{
  static A theOnlyInstance;
  return theOnlyInstance;
}
A::foo() {};
//classb.h and classc.h
include "classa.h"
//Normal Stuff..
A& localRefToA
//classb.cpp
B::B():localRefToA(A::getInstance()) {}; //Constructor
B::fooB()  //Function using A's member function
{
  localRefToA.foo();
}
//classC.cpp
C::C():localRefToA(A::getInstance()) {}; //Constructor
C::fooC()  //Function using A's member function
{
  localRefToA.foo();
}
