5.4.3 Вложенные Классы

5.4.3 Вложенные Классы

Описание класса может быть вложенным. Например:

class set (* struct setmem (* int mem; setmem* next; setmem(int m, setmem* n) (* mem=m; next=n; *) *); setmem* first; public: set() (* first=0; *) insert(int m) (* first = new setmem(m,first);*) // ... *);

Если только вложенный класс не является очень простым, в таком описании трудно разобраться. Кроме того, вложение класов – это не более чем соглашение о записи, поскольку вложеный класс не является скрытым в области видимости лексически охватывающего класса:

class set (* struct setmem (* int mem; setmem* next; setmem(int m, setmem* n) *); // ... *);

setmem::setmem(int m, setmem* n) (* mem=m, next=n*) setmem m1(1,0);

Такая запись, как set::setmem::setmem(), не является ни необходимой, ни допустимой. Единственный способ скрыть имя класса – это сделать это с помощью метода файлы-как-модули (#

4.4). Большую часть нетривиальных классов лучше описывать раздельно:

class setmem (* friend class set; // доступ только с помощью членов set int mem; setmem* next; setmem(int m, setmem* n) (* mem=m; next=n; *) *);

class set (* setmem* first; public: set() (* first=0; *) insert(int m) (* first = new setmem(m,first);*) // ... *);

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

11.2.3. Вложенные классы и модули

Из книги автора

11.2.3. Вложенные классы и модули Классы и модули можно вкладывать друг в друга произвольным образом. Программисты, приступающие к изучению Ruby, могут этого и не знать.Основная цель данного механизма — упростить управление пространствами имен. Скажем, в класс File вложен класс


ВЛОЖЕННЫЕ ЦИКЛЫ

Из книги автора

ВЛОЖЕННЫЕ ЦИКЛЫ      Вложенным называется цикл, находящийся внутри другого цикла. В этом разделе рассматривается пример, в котором вложенные циклы используются для нахождения всех простых чисел, не превышающих данного значения. Простое число - это такое число, которое


ВЛОЖЕННЫЕ СТРУКТУРЫ

Из книги автора

ВЛОЖЕННЫЕ СТРУКТУРЫ      Иногда бывает удобно, чтобы одна структура содержалась или была "вложена" в другую. Например, Шалала Пироски строит структуру, содержащую информацию о ее друзьях. Один элемент структуры - это, конечно, имя друга. Однако имя можно представить самой


8.5.3. Вложенные пространства имен

Из книги автора

8.5.3. Вложенные пространства имен Мы уже упоминали, что пользовательские пространства имен могут быть вложенными. Такие пространства применяются для дальнейшего структурирования кода нашей библиотеки.// ---- primer.h ----namespace cplusplus_primer {// первое вложенное пространство имен://


13.10. Вложенные классы A

Из книги автора

13.10. Вложенные классы A Класс, объявленный внутри другого класса, называется вложенным. Он является членом объемлющего класса, а его определение может находиться в любой из секций public, private или protected объемлющего класса.Имя вложенного класса известно в области видимости


Вложенные транзакции

Из книги автора

Вложенные транзакции В Firebird транзакции всегда запускаются и завершаются клиентом. Некоторые другие СУБД могут запускать и подтверждать транзакции из хранимых процедур, потому что для управления транзакциями они используют двухфазную блокировку транзакций. Вместо


7.4. Вложенные условные операторы if/then

Из книги автора

7.4. Вложенные условные операторы if/then Операторы проверки условий if/then могут быть вложенными друг в друга. Конечный результат будет таким же как если бы результаты всех проверок были объединены оператором &&.if [ condition1 ]then if [ condition2 ] then do-something # Только если оба условия


10.2. Вложенные циклы

Из книги автора

10.2. Вложенные циклы Цикл называется вложенным, если он размещается внутри другого цикла. На первом проходе, внешний цикл вызывает внутренний, который исполняется до своего завершения, после чего управление передается в тело внешнего цикла. На втором проходе внешний цикл


5.4.3 Вложенные Классы

Из книги автора

5.4.3 Вложенные Классы Описание класса может быть вложенным. Например:class set (* struct setmem (* int mem; setmem* next; setmem(int m, setmem* n) (* mem=m; next=n; *) *); setmem* first; public: set() (* first=0; *) insert(int m) (* first = new setmem(m,first);*) // ... *);Если только вложенный класс не является очень простым, в таком описании трудно разобраться.


8.5.15 Вложенные Классы

Из книги автора

8.5.15 Вложенные Классы Класс может быть описан внутри другого класса. Это, онако, лишь соглашение о записи, поскольку внутренний класс принадлежит охватывающей области видимости. Например:int x;class enclose (* // охватывающий int x; class inner (* // внутренний int y; void f(int); *); int g(inner*); *);inner a; void


18.5.11. Вложенные циклы for

Из книги автора

18.5.11. Вложенные циклы for Чтобы вложить, циклы, достаточно цикл for поместить в другой цикл:for имя_переменной in listdofor имя_переменной2 in list2doкоманда1done doneВ следующем сценарии представлен вложенный цикл for. Имеются два списка, APPS и SCRIPTS, первый из которых содержит путь к


Отложенные классы как частичные интерпретации: классы поведения

Из книги автора

Отложенные классы как частичные интерпретации: классы поведения Не все отложенные классы так близки к АТД как STACK. В промежутке между полностью абстрактным классом, таким как STACK, в котором все существенные компоненты отложены, и эффективным классом, таким как FIXED_STACK,