Introducing Radical.sh

Forget Code launches a powerful code generator for building API's

Abstract classes in C++


#include <iostream>
using namespace std;
class Books       
{
  public:
  Books()
{
        cout<<"\nBooks\n";
}
    virtual ~Books()
 {
 cout << "Books destructor...\n";
 }
 virtual void authors() const = 0;
};
 class History : public Books
{
  public:
    History()
{
 cout << "\tHistory books..." << endl;
}
    virtual ~History() 
{
 cout << "\nHistory destructor..." << endl;
}
};
 
class Poetry : public Books{
  public:
    Poetry( )
{ 
cout << "\n\tPoetry books.." << endl;
}
    virtual ~Poetry() {
cout << "\nPoetry destructor..." << endl;
  }
    virtual void authors() const
 {
 cout << "\t\tAuthors of Poetry..." << endl; 
cout << "\n1.Emily Dickinson";
cout<<"\n2.Rudyard Kipling";
cout<<"\n3.Walt Whitman";
cout<<"\n4.George Gordon, Lord Byron";
cout<<"\n5.William Shakespeare" << endl; 
  }
    
};
 
class FamousHistorical : public History
{
  public:
    FamousHistorical()
{
 cout << "\nFamousHistorical..." << endl; 
}
    virtual ~FamousHistorical() 
{ 
cout << "\nFamousHistorical destructor..." << endl; 
}
    virtual void authors()const
 {    
 cout << "\n1. Philippa Gregory";
 cout << " \n2.Markus Zusak";
 cout << " \n3.Kathryn Stockett";
 cout << " \n4.Arthur Golden";
 cout << " \n5.Diana Gabaldon." << endl; 
      }
 };
 
class OldHistorical : public History
{
  public:
    OldHistorical()
    {
 cout << "\nOldHistorical" << endl;
 }
    virtual ~OldHistorical() { cout << "OldHistorical destructor..." << endl; }
    virtual void authors()const
 {     
 cout << "\n1.Ahmed, Humayun";
cout << " \n2.Anita Desai";
cout << " \n3.Kalidasa";
cout << " \n4.Roy, Arundhati Arundhati Roy";
cout << " \n5.R.K.Narayan" << endl; 
 }
};
 
int main()
{
 Books *book=0;
 book = new OldHistorical();
 book->authors();
delete book;
 book = new FamousHistorical();
 book->authors();
 delete book;
 book = new Poetry ();
 book->authors();
delete book;
return 0;
 }