在我前前面已经说过组合类的概念了,今天我再介绍两个类,友元,以及内部类。
组合类,就是一个类中有另一个类的对象,如声明一个class penson,成员变量有姓名,年龄,出生日期等,在声明一个date类,这个类里面就是存的年月日的信息,因此我们可以将person类的出生日期设为date类,这就构成了一个组合类。
友元的概念,就像是我们的朋友,比如说 小红说小明是她的朋友,那么对于小红来说,小明肯定有别人所没有的特权(为什么是段子手小明啊 ,老王呢?)因此,类举到我们的类中,就是说,一个类可以把另一个类当成朋友,给予他访问自己成员变量的权利(包括私有成员变量,还真是推心置腹啊,没有一点秘密)。那么另一个类,在自己的类中就可以访问刚才那个类的变量。
友元还有一种概念是友元函数,类似于友元类。其实,友元类里面的每个方法都是一个友元函数,读者自行脑补。
友元的特征,不能传递(朋友的朋友不一定是朋友),不能交换(你把他当朋友,他不一定把你当朋友,在这就是他不把你当朋友),不能继承(你爸爸的朋友不一定是你的朋友)
友元类的使用时机:
友元虽然可以访问类的成员变量,但是他打破了类的封装,因此不建议这样做。
在运算符的重载是会用到友元类
在类与类之间要共享资源的时候
友元函数的参数问题(友元函数无this指针)有3种情况:
1、要访问非静态成员时,需要对象做参数;
2、要访问静态成员或全局变量时,不需要对象做参数;
3、如果做参数的对象是全局的,则也不需要对象做参数
内部类,内部类也叫做嵌套类。我个人很喜欢将其称为内部类,顾名思义,就是在一个类的中间定义另一个类。里层和外层类访问的规则是,互相可以访问公有成员。
在定义内部类前面要加上public,(类成员默认私有,不加系统默认为实声明了一个私有的内部类),内部类不可以直接访问外部类的成员,一种方法是通过外部类的对象,一种方法是静态访问即:外部类名::外部类静态成员访问
类的成员的访问方法(类外:public)
方法一:对象名.成员(变量或者函数)
指针变量à成员(变量或者方法)
(*指针变量).成员(变量或者方法)
方法二:类名::成员(变量或者函数)