1.嵌套类是一个独立的类,与外层类基本没什么关系。特别的是,外层类的对象和嵌套类的对象是相互独立的。在嵌套类的对象中不包含任何外层类定义的成员,在外层类的对象中也不包含任何嵌套类定义的成员。
2.嵌套类在其外层类中定义了一个类型成员。和其他成员类似,该类型的访问权限由外层类决定。
class external { public: int m_id; // internal里无法使用这个变量 class internal; }; class external::internal { public: internal(); }; external::internal::internal() { }
3.局部类定义的类型只在定义它的作用域内可见,局部类的所有成员都必须完整定义在类的内部。类似的,在局部类中也不允许声明静态数据成员,因为我们没法定义这样的成员。
4.局部类对外层作用域中的名字的访问权限收到很多限制,局部类只能访问外层作用域定义的类型名,静态变量以及枚举成员。如果局部类定义在某个函数内部,则该函数的普通局部变量不能被该局部类使用。
namespace A { int i; class partical { public: partical() { i = 0; } // 正确 }; } void test() { int i; class partical { public: partical() { i = 0; } // 错误 }; }