Странные вызовы конструктора
Обратите внимание на забавные вызовы конструктора базового
класса - использование операции ':' после заголовка функции, и перед
телом функции. Конструктор порожденного класса вызывает конструктор
базового класса, используя синтаксис вызова функции.
circle::circle(double x, double y, double r)
: shape(x,y) < Заметьте как конструктор circle вызывает
конструктор shape с начальной установкой
{
radius = r;
}