您的位置:首页 > 其它

内部类

2016-07-18 23:17 176 查看
定义内部类:

把一个类的定义写在另一个类的内部,则称里面的这个类为内部类。例如,Inner就是

class AAA
{
public:
//第一个一个内部类
class Inner
{
public:
char name[64];
};
}


使用内部类:

在使用该内部类时,类名要使用全称AAA::Inner,例如

int main()
{
AAA::Inner a;
strcpy(a.name,"Anxi");
}


注意事项

内部类和外部类互相没有特权

它们不是朋友关系

它们不是父子关系

它们没有任何特殊关系

所以外部类无法自由访问内部类,内部类也无法自由访问内部类

**内部类的访问限制

如果内部类被protected/private限制,则该类在外部不可见。(类名被完全隐藏)**

内部类的分离式写法

也可以把内部的成员函数定义分离到*.cpp中实现。。。

//////////AAA.cpp/////////
AAA::Inner::Inner()
{
}
void AAA::Inner::Test()
{
printf("name:%s\n",name);
}


为什么要用内部类?

既然内部类和普通类并无区别,那为什么要把它写在另一个类的内部呢?

原因:

(1)避免名字冲突

(2)如果一个类只在模块内部使用,则可是实现类名隐藏

当项目越来越大,避免类名的冲突成为一个现实存在的问题。。。将一些只在模块内部使用的类,写成内部类

注意:内部类还可以在定义内部类,没有层数限制,但一般就写两层
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: