目的是创建一个类型,不仅该类型的实例由周围类拥有,而且该类型本身也由周围类拥有。
举一个明显的例子,大多数容器类型都会将该容器的类型定义iterator
为嵌套类(或结构)。尽管vector<T>::iterator
并deque<T>::iterator
表示相似的概念,但每个概念仍归其关联的容器类型所有,并且特定于其关联的容器类型。
就访问说明符而言,它们遵循通常的规则——如果你定义了一个结构/类定义private
,它只会对同一个类中的其他代码可见。如果是protected
,则该类及其后代可以看到它。如果它是公开的,那么每个人都可以看到它。
举一个更具体的例子,对于企业中的职位,您可能有:
class secretary {};
class executive {
class secretary {};
};
在这种情况下,a::secretary
是“普通”秘书,anexecutive::secretary
是执行秘书——尽管显然相似,但执行秘书通常具有与非执行秘书至少有些不同的职位描述。执行副总裁可能有一个执行秘书和两个“普通”秘书,但较低级别的经理可能只被授权拥有一名普通秘书,而不是执行秘书。
在实际的编程中,你经常有私有的嵌套类——不像执行秘书与普通秘书不同,其中一些是世界其他地方甚至根本不知道它们存在的东西(至少除非它们看起来当然在标题的私人部分)。