1 一个类与另一个类除了扩充的一部分外其余都相同,这时我们可以使用继承来实现,基础的类叫基类,在其基础上的叫继承出来的
2 基类的成员也都是继承类的成员,而且继承类自己还可以再加成员,也可以重新定义基类中的成员,但是不能删除基类的成员函数
3 基类中的私有部分数据和函数不能被继承类的成员函数访问
4 protected类型:给了继承类访问基类中的私有成员的权利,同时不被继承类以外其他使用者访问
5 继承类的函数定义中调用了基类的函数可以直接使用,也可以在前面表明core::,同样适用于成员数据,但是同名字的成员函数必须表明定义域,保险起见尽量都表明
6 自定义类的编译器工作过程:
1)分配内存空间
2)采用构造函数初始化(如果是派生类,还要构造基类部分的数据)
对于派生类的编译过程:
1)分配内存空间(基类和派生类)
2)基类构造函数来进行初始化
3)构造初始化器对派生部分数据初始化
4)执行派生类构造函数函数体
7 派生类有一个初始化器用来制定基类的选用哪一个构造函数,初始化器采用基类的名字,后面加上参数,参数的个数和类型决定了用基类的哪个构造函数(参数可以为空),没有制定则默认构造函数
8 派生类的构造函数不要求与基类的构造函数有一样的参数
9 对于以基类作为参数的函数,如果用到和基类相同的部分,可以用派生类来作为参数
10 将一个对象作为函数参数和对象的引用作为参数有很大的区别:
11 virtual关键字只能在类的定义内使用,声明之外的单独定义不能使用,定义虚拟函数
12 一个函数在基类中是虚拟的,那么在派生类中也是虚拟的,所以同一个名字的函数在基类中声明就可 ,派生类正常从新定义就可以
13 采用虚拟的函数,在每次使用时会具体判断到底是哪一个,基类还是派生类
14 静态绑定:函数调用对象作为参数,参数为基类,实际用的是派生类,但是会将派生类删减到只剩基类再使用,
用什么在编译的时候就已经确定
动态绑定:运行时才定下用什么函数,用指针和引用来来调用的虚拟函数就是动态绑定,
15 多态性:指向基类的对象的引用和指针可以用指向派生类的指针和引用来替换,c++采用虚拟函数的动态绑定来实现多态性
16 对于虚拟函数,不管调用还是不调用,都必须定义,否则会报错,但是一般函数不调用是可以只声明不定义的
17