|
C++Это один способ определять средства для иерархически построенных объектов вроде myshape. Другой способ демонстрируется на примере носа. Никакой нос не определяется, его просто добавляет к картинке функция draw(): void myshape::draw() (* rectangle::draw(); put_point(point( (swest().x+neast().x)/2,(swest().y+neast().y)/2)); *) myshape передвигается посредством перемещения базового прямоугольника rectangle и вторичных объектов l_eye, r_eye и mouth (левого глаза, правого глаза и рта): void myshape::move() (* rectangle::move(); l_eye-»move(a,b); r_eye-»move(a,b); mouth-»move(a,b); *) Мы можем, наконец, построить несколько фигур и немного их подвигать: main() (* shape* p1 = new rectangle(point(0,0),point(10,10)); shape* p2 = new line(point(0,15),17); shape* p3 = new myshape(point(15,10),point(27,18)); shape_refresh(); p3-»move(-10,-10); stack(p2,p3); stack(p1,p2); shape_refresh(); return 0; *) Еще раз обратите внимание, как функции вроде shape_refresh() и stack() манипулируют объектами типов, опрделяемых гораздо позже, чем были написаны (и, может быть, окомпилированы) сами эти функции. *********** * * * * * * * * * * * * * * * * * * *********** ***************** ************* * * * ** ** * * * * * * * * * ********* * * * ************* 7.7 Свободная Память Если вы пользовались классом slist, вы могли обнаружить, что ваша программа тратит на заметное время на размещение и освобождение объектов класса slink ...» |
Код для вставки книги в блог HTML
phpBB
текст
|
|