2 hchchc6016 hchchc6016 于 2016.04.14 21:52 提问

内部类是不是最好为私有的,像iterator在容器之中是不是就是私有的内部类呢?

内部类是不是最好为私有的,像iterator在容器之中是不是就是私有的内部类呢?
内部类的私有和公有会对内部类的成员变量和函数有什么影响呢?

4个回答

sbfksmq
sbfksmq   2016.04.15 00:17
已采纳

比如说LIST 的内部类Node是作为类的内部结点封装一个前后指针,在LIST内做功能(如push_back,push_front)实现的基本数据类型使用,不需要与类外做交互,LIST只需要提供功能接口即可,所以私有封装Node最佳。
LIST 的内部类Iterator(相当于一个泛型的指针)提供外界来访问LIST的容器的元素,需要在类外的实体才能使用(list::iterator = l1.begin()),如果私有化类外无法实例,所以应该对外暴露出来。
LIST里的接口begin() end()在类内Iterator的作完节点指针调整后的iterator临时对象.作为内部类的iterator ,如果类外调用iterator模拟出来的指针功能,还要在iterator内部声明list为其友元类。

caozhy
caozhy   Ds   Rxr 2016.04.14 22:14

不一定,看情况了。如果外部需要用,那么还得是公开的,比如说,你可以把node类、iterator类定义在binarytree类内部,但是显然它们都是需要公开的。

CSDNXIAOD
CSDNXIAOD   2016.04.14 22:02

new 一个私有内部类
内部类之设计模式-内部类可以访问外部类的私有成员
内部类之设计模式-内部类可以访问外部类的私有成员
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

oyljerry
oyljerry   Ds   Rxr 2016.04.14 22:12

内部类本身也不会公开 是类自己内部需要使用的helper函数等

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!