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

Класс 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() {} };

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: