问题描述
- 内部类是不是最好为私有的,像iterator在容器之中是不是就是私有的内部类呢?
-
内部类是不是最好为私有的,像iterator在容器之中是不是就是私有的内部类呢?
内部类的私有和公有会对内部类的成员变量和函数有什么影响呢?
解决方案
比如说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为其友元类。
解决方案二:
不一定,看情况了。如果外部需要用,那么还得是公开的,比如说,你可以把node类、iterator类定义在binarytree类内部,但是显然它们都是需要公开的。
解决方案三:
new 一个私有内部类
内部类之设计模式-内部类可以访问外部类的私有成员
内部类之设计模式-内部类可以访问外部类的私有成员
解决方案四:
内部类本身也不会公开 是类自己内部需要使用的helper函数等
时间: 2024-12-05 00:37:13