Difference between revisions of "CPP/Classes/PureVirtualFunction"

From ProgrammingExamples
< CPP
Jump to: navigation, search
(PureVirtualFunction.cpp)
Line 33: Line 33:
 
==Virtual Functions & Abstract Classes==
 
==Virtual Functions & Abstract Classes==
 
<source lang="cpp">
 
<source lang="cpp">
int main()
+
#include <iostream>
 +
 
 +
class Vehicle
 
{
 
{
   return 0;
+
public:
 +
        //Here we declare a Pure Virtual Function
 +
  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;
 
}
 
}
 
</source>
 
</source>

Revision as of 10:28, 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
   	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;
}