CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

继承的基本概念及语法

既能用继承,又能用组合,优先选用组合,会比较方便
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
派生类的构成
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

继承方式:

公有继承,私有继承,保护继承
CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
被继承的保护成员在派生类内相当于公有成员,可以直接访问,但是在类外不可。
总而言之,这些不同的继承方式影响的是原来类成员的在派生类中的身份问题,这些影响不会出现在当前派生类,会影响到派生类的派生类。
基类和派生类的类型转换:仅限于public公有继承CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

派生类的构造函数

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
多继承时,构造函数的构造顺序是取决于继承的顺序

派生类的复制构造函数

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
派生类对象可以充当基类对象,的引用可以用来初始化基类对象的引用。

派生类的析构函数

CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
析构的顺序与构造顺序相反

访问从基类继承的成员

当基类派生类成员同名时CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
不同基类的二义性问题CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
多继承时的二义性CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

虚基类(解决冗余问题)

相当于在其派生类里创建了指针,而在最远派生类直接继承
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

类的多态性

操作接口具有表现不同形态的能力,不同环境下对不同对象有不同处理方式,通过绑定实现,绑定就是将一个标识符名称和一段代码结合起来——举例:函数调用表达式与函数体结合。编译时的绑定,早绑定。运行时的绑定,晚绑定。

运算符重载规则:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
双目运算符重载为成员函数
CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
该括号里面的形参为双目运算符的第二个参数,因为第一个参数默认为成员类的CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
单目运算符重载为成员函数:
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
上述例子表明,前置++运算符返回的是引用,可以作为左值,后置++,返回的临时无名对象的内容,只能作为右值CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
运算符重载为非成员函数:
1.当第一个操作数(左操作数)为非该类对象时
2.当使用的不是自己设计的类对象

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

虚函数

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
若基类函数为虚函数,派生类重载函数则默认为virtual类型,不管加不加virtual,为了可读性,一般加上。
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

虚析构函数:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
在上例中,new函数在构造derive对象时候,只会调用构造函数,不会调用析构函数(当用new来创建对象时,其析构函数不会自动调用,只能通过delete来释放内存。),所以此时应当把析构函数命名为虚函数
CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
公有继承的所有的派生类都是从基类继承的,编译器会认为它们类型都是一样的。
派生类析构函数调用之后,会紧接着调用基类的析构函数。

虚表与动态绑定——虚函数的实现方法:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

抽象类:

只要含有纯虚函数的是抽象类,不能定义该类的对象(不能实例化)但可以被继承,可以用指针指向它。
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

override与final:

CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
多态是指同样的消息作用于不同的对象会产生不同的行为。运算符重载是静态多态性的,是一种扩充语言的机制,而不是改变语言的机制。
动态多态性是通过虚函数来实现的,派生类对象可以初始化基类的引用,派生类的对象地址,可以赋值给基类的指针。
如果想要通过基类指针和引用访问派生类的对象的成员,就要使用虚函数。因为虚函数才有动态绑定的功能,生成了虚表,里面包含了对应的函数,通过基类指针可以访问不同类的同名函数。
PS:虚基类解决的是类成员标识二义性和信息冗余的问题,而虚函数是实现动态多态性的基础。

函数模板:

CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
typename在这里和class没有区别CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
并不是随意定模板,若模板参数表是自定义类型,则应该重载相关运算符使该类型能参与运算,,否则会出错。

类模板:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

线性群体:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
数组类模板:CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
如何封装一个动态数组类
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
为什么有的函数返回值是引用CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
指针转换运算符的作用:CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
数组类应用举例:CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

STL简介

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz使用容器要包含相应的头文件CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
transform算法作用:通过循环遍历队列CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

迭代器:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

容器的基本功能和分类:

CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
从迭代器的访问方式和容器中数据组织方式可分为以下两种CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

顺序容器的基本功能:

CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
顺序容器的通用接口函数:CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
顺序容器的特征:
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
顺序容器的插入迭代器与适配器:CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
关联容器的分类和基本功能:CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

函数对象:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
函数适配器:CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

STL算法:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

IO流的概念和流类库的结构:

CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
流是信息的一种流动。
键盘和显示器都是一种“文件对象”
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

输出流概述:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
文件流内部有一个指针,默认指向文件写入下一个数据的地址CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
fixed表示定点形式,scientific表示科学计数法形式
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
向二进制文件输出:
当不需要对外显示阅读,只需要在文件之间传递数据时,只需要传递二进制信息即可,这样传输效率比较高。CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
C++中不支持对象的序列化,即将类的对象整体存盘。
向字符串输出:
将内存中的一个字符串当作输出的目的地
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

输入流概述:

CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
cin相当于输入流类里已经定义好的对象CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
EOF表示文件结束符,windows中是ctrl+zCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
从字符串输入:CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

输入输出流:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz

异常处理的思想与程序实现:

CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
抛出之后,try函数括号后面的异常程序均不执行。
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
异常接口声明可以使程序可读性变好。CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
异常处理中的析构与构造:CPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
自动析构发生在throw之后,在catch之前CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
标准程序库异常处理:
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz
详细了解要参考cpp类库说明。
CPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)OrzCPP程序设计进阶篇笔记(主要还是ppt的截图)Orz