目录内部类的概念内部类的特性C允许在类的内部定义另一个类这个内部定义的就叫做内部类。内部类看似嵌套但其本质是一个独立的类仅受到外部类类域和访问权限的限制。内部类的概念内部类是定义在某个类外部类内部的类它对外部类而言是一种强关联的类型常用于实现某种私有的辅助结构如节点、迭代器等。classA{public:classB{// 内部类public:voidfoo(constAa){coutkendl;// 直接访问外部类静态成员couta.hendl;// 通过对象访问非静态私有成员}};private:staticintk;inth;};intA::k10;intmain(){A a;A::B b;// 使用 A::B 访问内部类b.foo(a);// 调用return0;}内部类的特性天生友元内部类自动成为外部类的友元类可以访问外部类的私有成员包括静态和非静态但非静态需通过对象。访问限定符内部类可以放在外部类的public、protected或private区段这决定了外部世界能否访问它如上例B是public外部可创建A::B对象。但无论放在哪友元关系不受影响。独立性sizeof(外部类)的值不包含内部类的大小内部类只是一个类型声明不占对象空间。静态成员访问内部类可以直接访问外部类的static成员不需要对象或类名限定如上例直接使用k。内部类在C中不算特别常用但在一些特定场合如封装不想暴露给全局的辅助结构或实现与外部类紧密耦合的逻辑是很好的选择。它的友元特性比单独声明友元类更内聚。