摘要:
static_cast、reinterpret_cast、const_cast和dynamic_cast 1.static_cast 用来进行比较“自然”和低风险的转换,比如整形和实数型、字符型之间互相转换。 不能在不同类型类型的指针之间互相转换,也不能用于整型和指针之间的互相转换,也不能用于不同类 阅读全文
摘要:
可以用某种顺序容器来实现 (让已有的顺序容器以栈/队列的方式工作) 1) stack: 头文件 <stack> 栈 -- 后进先出 2) queue: 头文件 <queue> 队列 -- 先进先出 3) priority_queue: 头文件 <queue> 优先级队列 -- 最高优先级元素总是第一 阅读全文
摘要:
map/multimap里放着的都是pair模板类的对象,且按first从小到大排序。 pair 模板: template <class _T1, class _T2> struct pair { typedef _T1 first_type; typedef _T2 second_type; _T 阅读全文
摘要:
set, multiset, map, multimap 内部元素有序排列,新元素插入的位置取决于它的值,查找速度快。 除了各容器都有的函数外,还支持以下成员函数。 find:查找等于某个值的元素(x<y和y<x同时不成立即为相等) lower_bound:查找某个下界 upper_bound:查找 阅读全文
摘要:
C++中有两个方面体现重用: 面向对象的思想:继承和多态,标准类库 泛型程序设计的思想:模板机制,以及标准模板库STL 标准模板库就是一些常用数据结构和算法的模板的集合。 容器:容纳各种数据类型的通用数据结构,是类模板。 迭代器:可用于依次存取容器中的元素,类似于指针 算法:用来操作容器中的元素的函 阅读全文
摘要:
若一个类重载了运算符“()”,则该类的对象就成为函数对象。函数对象可以用于标准库算法。函数对象和函数指针很相似,但也有区别。当函数对象使用模板时可以赋值给函数指针。 函数运行结果: 参考链接: https://www.coursera.org/learn/cpp-chengxu-sheji 阅读全文
摘要:
泛型程序设计 算法实现时不指定具体要操作的数据的类型。适用于多种数据结构。 函数模板 Template <class 类型参数1,class类型参数2,…..> 返回值类型 模板名(形参表) { 函数体; } 函数模板可以重载,只要它们的形参表不同即可。 C++编译器遵循以下优先顺序: 先找参数完全 阅读全文
摘要:
文件和流 顺序文件 一个有限字符构成的顺序字符流 C++标准库中:ifstream,ofstream和fstream共3个类用于文件操作统称为文件流类。 文件操作 使用/创建文件的基本流程 建立顺序文件 也可以先创建ofstream对象,再用open函数打开ofstream fout;fout.op 阅读全文
摘要:
通过基类的指针在删除派生类对象时只调用了基类的析构函数,而没有调用派生类的析构函数,因此在有些程序中会存在问题。(例如需要在构造函数与析构函数中进行计数统计的程序) 实际效果: 删除一个派生类对象时 解决办法: 把基类的析构函数声明为virtual 派生类的析构函数virtual不用声明 通过基类的 阅读全文
摘要:
多态实现的关键 虚函数表 每一个有虚函数的类(或有虚函数的类的派生类)都有一个虚函数表,该类的任何对象中都放着虚函数表的指针。虚函数表中列出了该类的虚函数地址。多出来的4个字节就是用来存放虚函数表的地址的。 多态的函数调用语句被编译成一系列根据基类指针所指向的(或基类引用所引用的)对象中存放的虚函数 阅读全文