20170121C++阶段班05_STL_02inheritance补充
来源:互联网 发布:如何申请网络域名 编辑:程序博客网 时间:2024/05/20 16:37
inheritance补充讲解:
1:为什么要有继承,继承的用处:
1:可以让我们实现代码的重用。
代码重用的方式
1:copy,直接copy一份。
2:组合:是C++语言里面特有的,就是类里面使用其他类当作参数。C++的设计哲学就是不要反复地去造轮子,能够用已有的就可以用。通过组合可以使用很多,达到代码重用的目的。他的关系是HasA的关系。
3:继承:他是继承的方式,可以重用积累的一些数据和方法。关系是IsA的关系。
2:其他注意点:
1:继承里面有两个函数是无法被继承的:构造析构,析构函数。
2:派生类继承于基类的数据不能在初始化列表里面来操作,因为初始化列表的时候,这几个数据还没有,只能在构造函数里面可以操作。但是派生类自己的数据还是可以在初始化列表里面来初始化。
3:如果基类没有不用传参的构造函数,派生类构造函数可以显示的调用积累的构造函数,但是派生类自己的数据还是要初始化(派生类对象调用的时候会默认调用本类数据,如果没初始化可能导致后面的错误),可以在初始化列表里面做,也可以在构造函数里面做。
4:数据成员的重定义并非是覆盖,这时他们都存在,在派生类对象里面都占用空间。数据从定义本身就是不好的,容易出问题的。
3:方法的重写:
1:方法重写的标准是,只要函数名相同就是重写,重写后对象调用默认调用本类的方法,如果方法不合适,他也不会自动调用基类可能合适的重写的方法。
2:方法重写后,用那个类调用这个方法就会默认使用哪个类的方法。如果还是需要访问分i累的方法,那么可以通过域作用符来指定调用那一个重载的函数。
4:重载,重定义,覆盖
1:overload:重载:必要要作用域一样才构成重载。是多态里面的一种手段,其实是:多种形态,结果一致!
2:overwrite:重写:重定义:子类基类之间,只要函数名相同就构成重定义。
3:overrride:覆盖:虚函数相关。
5:继承:
1:C++类里面构造函数,析构函数是无法被继承的。operator=是可以被继承的。
2:public继承的时候,传递参数的时候就可以派生类转换成基类。但这回产生对象切割,会丢失一些特性。
#include <iostream>class A{public:};class B:public A{public:};int main(){A *pa = new A;B *pb = new B;A a;B b;pa = pb;//派生类向基类转换,会产生对象切割,会丢失一些特性。//pb = pa;//非法的,但是可以使用reinterpret_cast<>()来进行强制转换。但是很危险。a = b;//b = a;//非法的return 0;}
1 0
- 20170121C++阶段班05_STL_02inheritance补充
- C补充
- 实习面试后续补充知识阶段总结
- 嵌入式班阶段考试试卷(C、C++、Linux部分)
- c + +B阶段学习
- 1 C 编译阶段
- c学习阶段总结
- c 各个阶段解释
- 【c++】准备阶段
- c 语法部分补充
- [objective-c] ARC 补充
- c/c++补充_1
- c/c++补充_2
- C语言基础补充
- C 语言知识补充
- C语言补充学习
- C语言基础知识补充
- 20161224C++阶段班03_Object C++_01对象
- 使用Bootstrap的后台猿人可能会用到的功能
- K上升序列总和
- 证明重组问题为NP完全问题
- linux-head命令
- Android弹幕功能实现,模仿斗鱼直播的弹幕效果
- 20170121C++阶段班05_STL_02inheritance补充
- 如何解决 error adding symbols: Bad value 问题
- Java反射
- CC2541关于OAD空中升级(安卓客户端收不到服务的)
- Ubuntu下安装opencv 2.4.11
- POJ-1787 Charlie's Change( 多重背包记录方案)
- hihoCoder--1036 Trie图(AC自动机)
- 经典的机器人入门资料
- Mac下配置本地Maven