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

问题描述

内部类是不是最好为私有的,像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

c++-内部类是不是最好为私有的,像iterator在容器之中是不是就是私有的内部类呢?的相关文章

C#内部类

在<Java编程思想>中花了一章的篇幅介绍,内部类的相关特性.而在C#的书籍中很少有提交内部类的介绍.这篇文章,就简要介绍一下,C#中的内部类. 我们新建一个测试类文件,定义一个类:OuterClass.在其内部定义一个类:InnerClass1(暂且将其访问级别设置为public). 来做几个简单测试,截图如下: 以上在InnerClass1中试图访问outerClass的实例变量失败! 内部类访问外部类的实例方法同样失败! 外部类也无法索引到内部类的实例变量(同样外部类也无法调用内部类的任

spring+ibatis的dao接口 能使用内部类吗?

问题描述 spring+ibatis的dao接口 能使用内部类吗? spring+ibatis的dao接口 能使用内部类吗? spring扫描xml加载的 要怎么配置? 现在加载不到namespace指定的内部类 public interface MissionTypeMatterMapper { int deleteByPrimaryKey(Integer mission_matter_id); void insert(MissionTypeMatter record); List<Missi

Java基础-10总结形式参数,包,修饰符,内部类

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 类,抽象类,接口的综合小练习 /* 教练和运动员案例(学生分析然后讲解) 乒乓球运动员和篮球运动员. 乒乓球教练和篮球教练. 为了出国交流,跟乒乓球相关的人员都需要学习英语. 请用所学知识: 分析,这个案例中有哪些

java内部类的总结

内部类总结: 1内部类的嵌套可以理解成类的链关系,在构造一个内部类(非static)的实例的时候,会将直接外层类的实例作为参数传进构造函数,而外层类的实例也是用其外层类的实例构造,所以是一种链状关系,内部的类可以使用所有外层的类的实例,而外层的类不能使用内层的类, 应用a.this(最外层类实例) ,a.b.c.this(链中某个外层的实例). class TheOuter{ class kk { class gg { int tt = 100; } } class aa { class bb

浅析Java中的嵌套类和内部类

以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很大的疑惑:嵌套类跟内部类有什么区别?只有是否有关键字static的区别吗? 所以今天找了个时间查了一下两者的详细区别,总结在这篇博客中,既方便自己的复习和学习,也启示他人吧. 1,概念: 定义在一个类内部的类,叫作"嵌套类".嵌套类分为两种:static的和非static的.后者又有一个专

为什么要用内部类:控制框架

到目前为止,大家已接触了对内部类的运作进行描述的大量语法与概念.但这些并不能真正说明内部类存在的原因.为什么Sun要如此麻烦地在Java 1.1里添加这样的一种基本语言特性呢?答案就在于我们在这里要学习的"控制框架". 一个"应用程序框架"是指一个或一系列类,它们专门设计用来解决特定类型的问题.为应用应用程序框架,我们可从一个或多个类继承,并覆盖其中的部分方法.我们在覆盖方法中编写的代码用于定制由那些应用程序框架提供的常规方案,以便解决自己的实际问题."控

深入理解Java嵌套类和内部类

一.什么是嵌套类及内部类? 可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它 有两种类型: 静态嵌套类和非静态嵌套类.静态嵌套类使用很少,最重要的是非静态嵌套 类,也即是被称作为内部类(inner).嵌套类从JDK1.1开始引入.其中inner类又 可分为三种: 其一.在一个类(外部类)中直接定义的内部类; 其二.在一个方法(外部类的方法)中定义的内部类; 其三.匿名内部类. 下面,我将说明这几种嵌套类的使用及注意事项. 二.静态嵌套类 如下所示代码为定义一个

java中的内部类详细总结_java

内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动) 显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类 而心脏又在人体当中,正如同是内部类在外部内当中 实例1:内部类的基本结构 复制代码 代码如下: //外部类 class Out {     private int age = 12;     //内部类     class In {      

Java内部类的继承(全)_java

下面通过实例代码给大家分享下有关JAVA内部类的继承,具体详解如下: Java内部类的构造器必须连接到指向其外围类对象的引用(构造内部类必须给它一个外部类对象的引用,内部类依赖于外部类对象),所以在继承内部类的时候,需要在导出类的构造器中手动加入对基类构造器的调用. 因为,在导出类实例化时,并不存在一个外围类对象,以让导出类的实例去连接到它. 所以,我们需要创建一个外围类,然后用一个特定的语法来表明内部类与外围类的关系. 在下例子中,需要给导出类InheritInner一个来自内部类的外围类中的