Цель состоит в том, чтобы создать тип, который не только экземпляров этого типа принадлежат окружающему классу, но сам тип также принадлежит окружающему классу.
Для очевидного примера большинство типов контейнеров будут определять тип iterator
для этого контейнера в виде вложенного класса (или структуры). Несмотря на то, что vector<T>::iterator
и deque<T>::iterator
представляют собой подобные концепции, каждый из них по-прежнему принадлежит определенному контейнеру и связан с ним.
Что касается спецификаторов доступа, они следуют обычным правилам - если вы сделаете определение структуры/класса private
, оно будет видимым только для другого кода того же класса. Если это protected
, он будет виден этому классу и его потомкам. Если он будет открыт, он будет виден всем.
Чтобы дать более конкретный пример, для позиции в бизнесе, вы можете иметь:
class secretary {};
class executive {
class secretary {};
};
В этом случае ::secretary
является «нормальным» секретарь и executive::secretary
является исполнительным секретарем - хотя очевидно, аналогичный, исполнительный секретарь, как правило, имеет описание работы, которое по крайней мере несколько отличается от неисполнительного секретаря. Исполнительный вице-президент может иметь одного исполнительного секретаря и двух «нормальных» секретарей, но менеджер более низкого уровня, вероятно, имеет право только иметь нормального секретаря, а не исполнительного секретаря.
В реальном программировании у вас часто есть частные вложенные классы - в отличие от исполнительного секретаря, который отличается от обычного секретаря, некоторые из них - это вещи, которые остальная часть мира даже не знает, что они существуют вообще по крайней мере, если они, конечно, не смотрят на частные части заголовка).
Это дает вам структуру, общедоступную как Room :: Door, вы также можете иметь класс под названием Car, который также содержит структурную Дверь. –
Меня больше интересует, почему они поддерживают вектор указателей. –
@eds. Я думаю, что причина вектора указателей заключается в том, что каждая дверь уникальна не только для комнаты, но и для мира. – gardian06