Base Class Template


/**
  @file   Base.h
  @brief  Header for Base Class
*/

#ifndef	BASE_DEF__
#define	BASE_DEF__


#include  < iostream >
#include  < stdio.h >

using namespace std;

/**
  @class  Base
  @brief  This is the top-most hierarchical level class
*/

class Base
{
  /// Local variable
  int age;

  public:
  /// @name CONSTRUCTORS/DESTRUCTOR
  /// @{

  /// Default constructor
  Base();

  /// Copy constructor
  Base( Base & X);

  /// Init constructor
  Base(int value);

  /// Destructor
  ~Base();
  //@}

  /// @name OPERATORS
  /// @{

  /// Assignment operator
  void  operator = (Base &X);

  /// Comparison operator
  bool  operator == (Base &X);
  //@}

  /// @name INTERFACE
  /// @{

  /// Interface polymorph function
  virtual void  PrintStatus();

	//virtual  void	PrintStatus();
  //@}

  /// @name DEBUGGING
  /// @{

  void  Dump();
  //@}
};

#endif

  

/**
  @file   Base.cpp
  @brief  Implementation file for Base Class
*/

#include "Base.h"

///////////////////////////////////////////////////////
// Default constructor

Base::Base()
{
  cout << "Base default constructor"<< endl << flush;
  age = 0;
}

///////////////////////////////////////////////////////
// Copy constructor

Base::Base( Base & X)
{
  cout << "Base copy constructor"<< endl << flush;
  age = X.age;
}

///////////////////////////////////////////////////////
// Init constructor

Base::Base(int value)
{
  cout << "Base init constructor"<< endl << flush;
  age = value;
}

///////////////////////////////////////////////////////
// Destructor

Base::~Base()
{
  cout << "Base destructor"<< endl << flush;
}

///////////////////////////////////////////////////////
// Assignment operator

void Base::operator = (Base &X)
{
  age = X.age;
}

///////////////////////////////////////////////////////
// Comparison operator

bool Base::operator == (Base &X)
{
  if (age == X.age)
    return true;

  return false;
}

///////////////////////////////////////////////////////
//  Debug

void Base::Dump()
{
  cout << "BASE OBJECT : "
       << "Age = " << age << endl << flush;
}

///////////////////////////////////////////////////////
//  Polymorph interface fucntion

void Base::PrintStatus()
{
  cout << "** [Base]  age = " << this->age << endl << flush;
}