hchchc6016
2016-04-14 13:52
采纳率: 91.2%
浏览 1.4k

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 鸟类学 2016-04-14 16: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为其友元类。

    点赞 评论
  • oyljerry 2016-04-14 14:12

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

    点赞 评论
  • blownewbee 2016-04-14 14:14

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

    点赞 评论

相关推荐 更多相似问题