继承
一、书写形式,与java不同
java: class A extends B{}
c++: class A: public B{};
二、成员变量
- 首先,我们要知道,基类的所有的成员都被复制一份给了子类。但是,如果是private的成员,子类是无法直接访问的;如果是protected的成员,子类可以直接访问,但是与他无关的类无法访问;public的成员,可以直接访问
- 如果基类和派生类没有的同名的成员,可以直接通过写成员名调用。
- 如果基类和父类的成员名相同:
java:super.成员;
c++:基类名::成员;
三、构造函数
- 构造函数不能继承
- 先调用基类构造函数,再到用自身的构造函数
四、普通方法
派生类如果没有重写基类的函数,则调用基类的函数;如果重写了,直接调用的是派生类的;想要调用基类的:基类名::成员;
五、静态方法和变量
属于类成员,与对象无关
六、多继承
多继承方式下构造函数的执行顺序:
- 先执行所有基类的构造函数
再执行对象成员的构造函数
最后执行派生类的构造函数
多态
学习总结
c++的继承和多态,在概念上是差不多的,最不同的应该是那个赋值兼容规则。将基类的指针指向派生类的引用,会有一个权限的问题,但是通过虚函数解决了。另外我觉得与java很不同的一点是虚函数可以有函数体。纯虚函数才是相当于抽象方法
学习感想
这一周学习的积极性不太高,作业不想做,课也不太想听(是所有的课),也不知道咋回事。我会在写课程设计的期间,在多听听老师的课,巩固知识