内部类
2016-07-18 23:17
176 查看
定义内部类:
把一个类的定义写在另一个类的内部,则称里面的这个类为内部类。例如,Inner就是
使用内部类:
在使用该内部类时,类名要使用全称AAA::Inner,例如
注意事项
内部类和外部类互相没有特权
它们不是朋友关系
它们不是父子关系
它们没有任何特殊关系
所以外部类无法自由访问内部类,内部类也无法自由访问内部类
**内部类的访问限制
如果内部类被protected/private限制,则该类在外部不可见。(类名被完全隐藏)**
内部类的分离式写法
也可以把内部的成员函数定义分离到*.cpp中实现。。。
为什么要用内部类?
既然内部类和普通类并无区别,那为什么要把它写在另一个类的内部呢?
原因:
(1)避免名字冲突
(2)如果一个类只在模块内部使用,则可是实现类名隐藏
当项目越来越大,避免类名的冲突成为一个现实存在的问题。。。将一些只在模块内部使用的类,写成内部类
注意:内部类还可以在定义内部类,没有层数限制,但一般就写两层
把一个类的定义写在另一个类的内部,则称里面的这个类为内部类。例如,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)如果一个类只在模块内部使用,则可是实现类名隐藏
当项目越来越大,避免类名的冲突成为一个现实存在的问题。。。将一些只在模块内部使用的类,写成内部类
注意:内部类还可以在定义内部类,没有层数限制,但一般就写两层
相关文章推荐
- Java之详解坦克大战游戏(一)
- django.db.utils.IntegrityError:(1215, canot add foreign key constraint)
- Storm入门之第一章
- 设计模式——抽象工厂
- Django models通过DateTimeField保存到MySQL的时间的时区问题
- BestCoder 2nd Anniversary Jewelry 离散化加扫描线
- windows 10右键项添加Notepad++
- Basically Speaking
- Spark机器学习库(MLlib)指南
- Android Postfix Completion快速补全插件
- Java烧脑驴游(五)--变量类型
- JAVA①
- 企业部分之-HA高可用集群的搭建
- Pyston与PyPy:为Python提速的两种不同方式
- HttpClient Timeout waiting for connection from pool 问题解决方案
- UVA 11489 I - Integer Game
- heartbeat双机热备的架设
- lcm [师大集训 Day8]
- JHTP自测题_第十章_面向对象编程-多态(Polymorphism)
- 下一个较大元素II