/**
@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;
}