// @topic T071220 Inheritance demo, pure virtual function
// @brief CPrimitive, CPrimitiveLine, CPrimitiveCircle, CPrimitiveRectangle
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
class CPrimitive {
virtual void draw() = 0; // pure virtual function
};//class CPrimitive
class CPrimitiveLine : public CPrimitive {
public:
void draw() {
cout << __FUNCTION__ << "\n";
}
};
class CPrimitiveCircle : public CPrimitive {
public:
void draw() {
cout << __FUNCTION__ << "\n";
}
};
class CPrimitiveRectangle : public CPrimitive {
public:
void draw() {
cout << __FUNCTION__ << "\n";
}
};
void doit()
{
vector< CPrimitiveLine > lines( 3 );
CPrimitiveLine line;
lines.push_back( line );
vector< CPrimitiveCircle > circles( 4 );
vector< CPrimitiveRectangle > rectangles( 5 );
for (CPrimitiveLine line : lines) line.draw();
for (CPrimitiveCircle circle : circles) circle.draw();
for (CPrimitiveRectangle rectangle : rectangles) rectangle.draw();
}
int main()
{
doit();
system("pause");
}