7.3.6 Ограниченные Интерфейсы

Класс slist – довольно общего характера. Иногда подобная общность не требуется или даже нежелательна. Ограниченные вды списков, такие как стеки и очереди, даже более обычны, чем сам обобщенный список. Такие структуры данных можно задать, не описав базовый класс как открытый. Например, очередь целых можно определить так:

#include «slist.h»

class iqueue : slist (* //предполагается sizeof(int)«=sizeof(void*)

public: void put(int a) (* slist::append((void*)a); *) int det() (* return int(slist::get()); *) iqueue() (**) *);

При таком выводе осуществляются два логически разделеных действия: понятие списка ограничивается понятием очереди (сводится к нему), и задается тип int, чтобы свести понятие очереди к типу данных очередь целых, iqueue. Эти два действия можно выполнять и раздельно. Здесь первая часть – это список, ограниченный так, что он может использоваться только как стек:

#include «slist.h»

class stack : slist (* public: slist::insert; slist::get; stack() (**) stack(ent a) : (a) (**) *);

который потом используется для создания типа «стек укзателей на символы»:

#include «stack.h»

class cp : stack (* public: void push(char* a) (* slist::insert(a); *) char* pop() (* return (char*)slist::get(); *) nlist() (**) *);

Загрузка...