内部类的定义: 把一个类的定义写在另一个类的内部,则称里面这个类为内部类。
例如,Inner就是
class AAA{
public:
class Inner
{
public:
char name[64];
}
}
在使用该内部类时,类名要使用全程 AAA::inner。除此之外,内部类和普通类没有任何区别。
内部类和外部类互相没有特权, 他们不是朋友关系,他们不是父子关系,他们没有任何关系。
所以,外部类无法自由访问内部类,内部类也无法自由访问外部类。
如果内部类被 protected/private限制,则该类在外部不可见。(类名被完全隐藏)
既然内部类和普通类并无区别,那为什么要把它写在另一个类的内部呢?
原因:
(1)避免名字冲突
(2)如果一个类只是在模块内部使用,则可以实现类名隐藏
当项目越来越大,避免类名的冲突成为一个现实存在的问题。。。将一些只在模块内部使用的类,写成内部类