/*
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
*/
/*
#include<iostream>
using namespace std;
class Base{
public:
void f() {cout << "Base::f() called" << endl;}
};
class Derived : public Base{
public:
void f() {cout << "Derived::f() called" << endl;}
};
int main()
{
Derived d, *pDer;
pDer = &d;
pDer->f();
Base* pBase;
pBase = pDer;
pBase->f();
}
*/
/*
#include<iostream>
using namespace std;
class Base{
public:
virtual void f() { cout << "Base::f() called" << endl;}
};
class Derived : public Base{
public:
virtual void f() {cout << "Derived::f() called"<< endl;}
};
int main()
{
Base *pBase;
Derived d, *pDer;
pBase = &d;
pDer = (Derived*)pBase;
pDer->f();
}
*/
/*
#include<iostream>
using namespace std;
class Shape{
public:
virtual void draw()
{
cout << "Shape" << endl;
}
};
class Circle : public Shape{
public:
virtual void draw()
{
cout << "Circle" << endl;
}
};
class Rec : public Shape{
public:
virtual void draw()
{
cout << "Rectangle" << endl;
}
};
class Line : public Shape{
public:
virtual void draw()
{
cout << "Line" << endl;
}
};
void paint(Shape* p)
{
p->draw();
}
int main()
{
paint(new Circle);
paint(new Rec);
paint(new Line);
}
*/
/*
#include<iostream>
using namespace std;
class Shape{
public:
void paint()
{
draw();
}
virtual void draw()
{
cout << "Shape::draw() called" << endl;
}
};
class Circle : public Shape{
public:
virtual void draw()
{
cout << "Circle::draw() called" << endl;
}
};
int main()
{
Shape* pShape = new Circle;
pShape->draw();
delete pShape;
}
*/
/*
#include<iostream>
using namespace std;
class Base{
public:
virtual void f()
{
cout << "Base::f() called" << endl;
}
};
class Derived : public Base{
public:
virtual void f()
{
cout << "Derived::f() called" << endl;
}
};
class GrandDerived : public Derived{
public:
virtual void f()
{
cout << "GrandDerived::f() called" << endl;
}
};
int main()
{
GrandDerived g;
Base *bp;
Derived *dp;
GrandDerived *gp;
bp = dp = gp = &g;
bp->f();
dp->f();
gp->f();
}
*/
/*
#include<iostream>
using namespace std;
class Shape{
public:
virtual void draw()
{
cout << "--Shape--";
}
};
class Circle : public Shape{
public:
virtual void draw()
{
Shape::draw();
cout << "Circle" << endl;
}
};
int main()
{
Circle circle;
Shape *pShape = &circle;
pShape->draw();
pShape->Shape::draw();
}
*/
/*
#include<iostream>
using namespace std;
class Base{
public:
virtual ~Base()
{
cout << "~Base" << endl;
};
};
class Derived : public Base{
public:
~Derived()
{
cout << "~Derived" << endl;
};
};
int main()
{
Base *p = new Derived();
delete p;
}
*/
#include<iostream>
using namespace std;
class Shape{
Shape* next;
protected:
virtual void draw();
public:
Shape() {next = NULL;}
virtual ~Shape(){}
void paint();
Shape* add(Shape* p);
Shape* getNext() {return next;}
};
void Shape::paint()
{
draw();
}
void Shape::draw()
{
cout << "--Shape--" << endl;
}