Абстрактные классы используются для описания общих свойств некоторых сущностей. От асбтрактных классов не могут быть созданы объекты, однако, допускается использовать указатели типа абстрактного класса. В этом суть преимущества, - есть некая абстрактная сущность, которая объединяет многие классы. Класс остается абстрактным до тех пор, пока не содержит переопределения для «чистых» виртуальных функций.
class Point
{
public:
int x,y;
virtual void Show () = 0;
};
class Rectangle: public Point
{
public:
int x1,y1;
}; //Абстрактный класс, т. к. виртуальная функция Show не переопределена
class ColorPoint: public Point
{
public:
int color;
void Show()
{
cout<<x<<","<<y<<endl;
}
}; //От этого класса уже можно создавать объекты
void main()
{
//Point p; //Ошибка нельзя создавать объекты от абстрактного класса
//Rectangle r; //Ошибка нельзя создавать объекты от абстрактного класса
ColorPoint cp;
cp.y=15;
cp.x=10;
cp.Show(); //10,15
Point *p=new ColorPoint; //Создаем указатель типа абстрактного класса
p->x=10;
p->y=20;
p->Show(); //10,20
_getch();
}