Difference between revisions of "CPP/Classes/PureVirtualFunction"

From ProgrammingExamples
< CPP
Jump to: navigation, search
(PureVirtualFunction.cpp)
(Virtual Functions & Abstract Classes)
Line 38: Line 38:
 
{
 
{
 
public:
 
public:
         //Here we declare a Pure Virtual Function
+
         /*
 +
        * 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;
 
   virtual void SeeMeGo()=0;
 
};
 
};

Revision as of 10:40, 23 June 2010

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;
}