昨天看了类型的转换,几天自然就到c++的继承了,说起c++继承还真的和之前的java不太一样啊,但是其实总体的风格来说还是大体相同的,都体现出了代码的重用。今天看了类和类之间的关系一共有几种,继承的三种方式,多继承,虚基类。
老样子我们一个一个的说,先说类与类之间的关系,
包含关系,一个类部分的使用另一个类,继承关系,就算这三个吧,这个不是重点,我们往下走。
继承分为三种:公有继承,私有继承,保护继承。这三种的区别就是子类继承父类后,父类的保护成员变量和公有成员变量会在子类中编程什么样。
先说公有继承,其实学过java的就知道,这个就是java的普通继承,没学过java的可以认为公有继承就是父类的protected属性的变量,public的属性的变量原来是什么样,现在继承过来还是什么样。
保护集成就是将父类的protected属性变量和public变量全都在子类继承之后子类里变成保护的。
私有继承就是将弗雷德protected属性变量和public变量全都在子类继承后变成私有的变量。
这三种继承方式的共同点就是都继承不了父类的私有变量,具体怎么实战,望大家网上多多搜索,我也只能暂时起到一个启示的作用。
多继承,顾名思义,多继承就是一个类可以继承很多个类,这样一多继承,有些事就不那么简单了,比如有个B类,B1,B2类都继承B类,B12类继承B1,B2类,这个时候B12就是一个多继承,因为他既继承了B1类,又继承了B2类,当B1和B2还都有个方法名称一样的时候,我们还要避免二义行,要强调调用的是哪个父类的哪个函数或者变量。
关于虚基类,我有图,大家可以看
下面C是没用虚基类的,在内存里有两份
下面C是用虚基类的,在内存里有一份
如果不用虚基类的话那么,在内存里C对象会有两份,如果用了虚基类就会只有一份。
几天还特意看了看复杂的类型。就是指向指针的数组,一维数组每一个是一个指向堆空间的指针,二维数组每一个是指向一堆空间的指针,一个二级指针,指向一个堆空间的二维数组,这个二维数组每个元素又是一个指向具体对象的指针。
今天就太晚了,一会儿去刷牙,睡觉了,明天继续,各位看官也早点睡吧