CPP/Classes/PureVirtualFunction

From ProgrammingExamples
< CPP
Revision as of 10:43, 23 June 2010 by Nbaztec (Talk | contribs)

Jump to: navigation, search

PureVirtualFunction.cpp

#include <iostream>
#include <limits>
 
class Point
{
 
public:
  Point(const double xin, const double yin, const double zin) : x(xin), y(yin), z(zin) {}
 
  double x,y,z;
 
  virtual void Output() = 0;
 
};
 
class DerivedClass
{
  void Output()
  {
    std::cout << "Point Class." << std::endl;
  }
};	
 
int main(int argc, char *argv[])
{
 
  return 0;
}


Virtual Functions & Abstract Classes

#include <iostream>
 
class Vehicle
{
	public:
        /*
         * Here we declare a Pure Virtual Function
         * This class has now become an abstract class & 
         * it's instances cannot be created. Only pointers.
         *
         */
   	virtual void SeeMeGo()=0;
};
 
/* Some Derived Classes */
class Car : public Vehicle
{
	public:
		void SeeMeGo()
		{
		      	std:cout<<"I'm running at 50mph.\n";
		}
};
 
class Bike : public Vehicle
{
	public:
		void SeeMeGo()
		{
		      	std:cout<<"I'm whooshing at 80mph.\n";
		}
};
 
class Truck : public Vehicle
{
	public:
		void SeeMeGo()
		{
		      	std:cout<<"I'm crawling at 20mph.\n";
		}
};
 
int main(int argc, char *argv[])
{
  //Create a Pointer to Abstract Class Vehicle
  Vehicle *myVehicle;
 
  //Create Some Objects
  Car   myCar;
  Bike  myBike;
  Truck myTruck;
 
  //Call Functions
  myVehicle = &myCar;
  myVehicle->SeeMeGo();
 
  myVehicle = &myBike;
  myVehicle->SeeMeGo();
 
  myVehicle = &myTruck;
  myVehicle->SeeMeGo();
 
  return 1;
}