Программирование. Принципы и практика использования C++ Исправленное издание, стр. 178
}; Line_style(Line_style_type ss):s(ss), w(0) { } Line_style(Line_style_type lst, int ww):s(lst), w(ww) { } Line_style(int ss):s(ss), w(0) { } int width() const { return w; } int style() const { return s; }private: int s; int w;};Методы программирования, использованные для определения класса
Line_styleColorintFl_linestyleint
Класс
Line_stylegrid.set_style(Line_style(Line_style::dash,2));В итоге получим следующее изображение:

Обратите внимание на то, что цвет и стиль относятся ко всем линиям, образующим фигуру. Это одно из преимуществ группирования нескольких линий в один графический объект, например класса
LinesOpen_polylinePolygonLinehorizontal.set_color(Color::red);vertical.set_color(Color::green);На экране откроется окно, приведенное ниже.

13.6. Класс Open_polyline
Класс
Open_polylinepolypolylineOpen_polyline opl;opl.add(Point(100,100));opl.add(Point(150,200));opl.add(Point(250,250));opl.add(Point(300,200));
Этот фрагмент кода создает фигуру, которую можно нарисовать, соединяя следующие точки.
В принципе
Open_polylineКласс
Open_polylinestruct Open_polyline:Shape { // открытая последовательность линий void add(Point p) { Shape::add(p); }};Да-да, это все определение. В нем практически ничего нет, кроме указания имени класса и того факта, что он является наследником класса
Shapeadd()Open_polylineadd()ShapeShape::add()draw_lines()Shape13.7. Класс Closed_polyline
Класс
Closed_polylineOpen_polylineClosed_polylineOpen_polylineClosed_polyline cpl;cpl.add(Point(100,100));cpl.add(Point(150,200));cpl.add(Point(250,250));cpl.add(Point(300,200));Как и ожидалось, результат идентичен тому, что мы получили в разделе 13.6, за исключением последнего отрезка.
Определение класса
Closed_polylinestruct Closed_polyline:Open_polyline { // замкнутый ряд линий void draw_lines() const;};void Closed_polyline::draw_lines() const{ Open_polyline::draw_lines(); // сначала рисуем открытый ряд линий, // затем рисуем замыкающую линию: