Программирование. Принципы и практика использования C++ Исправленное издание, стр. 184
mpl.add(Point(150,200));mpl.add(Point(250,250));mpl.add(Point(300,200));В результате выполнения этого фрагмента программы получим следующий результат:

Определение класса
Marked_polylinestruct Marked_polyline:Open_polyline { Marked_polyline(const string& m):mark(m) { if (m=="") mark = "*"; } void draw_lines() const;private: string mark;};Поскольку этот класс является наследником класса
Open_polylinePointdraw_lines()void Marked_polyline::draw_lines() const{ Open_polyline::draw_lines(); for (int i=0; i<number_of_points(); ++i) draw_mark(point(i),mark[i%mark.size()]);}Вызов функции
Open_polyline::draw_lines()mark[i%mark.size()]Marked_polyline%draw_lines()draw_mark()void draw_mark(Point xy, char c){ static const int dx = 4; static const int dy = 4; string m(1,c); fl_draw(m.c_str(),xy.x–dx,xy.y+dy);}Константы
dxdymc13.15. Класс Marks
Иногда необходимо вывести метки отдельно от линий. Для этого предназначен класс
MarksMarks pp("x");pp.add(Point(100,100));pp.add(Point(150,200));pp.add(Point(250,250));pp.add(Point(300,200));В итоге будет получено следующее изображение:

Очевидно, что класс
MarksКласс
MarksMarked_polylinestruct Marks : Marked_polyline { Marks(const string& m) :Marked_polyline(m) { set_color(Color(Color::invisible)); }};13.16. Класс Mark
Объект класса
PointWindowMarksMarksНапример, мы могли бы пометить центры окружностей, изображенных в разделе 13.12, следующим образом:
Mark m1(Point(100,200),'x');Mark m2(Point(150,200),'y');Mark m3(Point(200,200),'z');c1.set_color(Color::blue);c2.set_color(Color::red);c3.set_color(Color::green);В итоге мы получили бы изображения, приведенные ниже.

Класс
MarkMarksstruct Mark : Marks { Mark(Point xy, char c) : Marks(string(1,c)) { add(xy); }};Функция
string(1,c)stringc