摘要: & 在C中表示取地址符,在C++中表示引用 在声明一个引用变量时,必须将其初始化,并且不允许在函数执行期间再将其作为其他变量的引用。 那么引用和指针谁更安全,谁更高效呢? 首先我们要认识到,使用引用传递函数的参数时,在内存中并没有实参的副本,而是对实参直接操作。当使用传值调用时,需要给形参分配存储单 阅读全文
posted @ 2020-04-30 02:23 Conan-Peng 阅读(2487) 评论(0) 推荐(1)
摘要: # 从四行代码看右值引用1. 右值引用是C++11新增加的一个重要特性,它主要解决两个问题:1)临时对象非必要的昂贵的拷贝操作;2)在模板函数中如何按照参数的实际类型进行转发。2. 第一行代码:int i = getVar(); 这行代码使用getVar()函数产生一个整型值,实际上这行代码生成了两 阅读全文
posted @ 2020-04-30 01:43 Conan-Peng 阅读(603) 评论(0) 推荐(0)
摘要: B树: 1. B树中每个节点最多有m个孩子,称为m阶B树。 2. 根节点至少有两个孩子。 3. 所有的叶子节点都位于同一层。 B树的目的是让每一个索引块尽可能存储更多的信息。与平衡二叉查找树不同,B树主要是为优化大块数据的读写操作而设计的。普遍应用在数据库和文件系统。 B+树是B树的一种变体: 1. 阅读全文
posted @ 2020-04-30 01:22 Conan-Peng 阅读(222) 评论(0) 推荐(0)
摘要: 1. 为什么用红黑树实现? map, set底层都提供了排序功能,红黑树形式存储的键值是有序的。同时红黑树可以在O(log n)时间内做插入,查找和删除。 2. 红黑树的性质 红黑树是每个节点都带有颜色属性的二叉搜索树,颜色要么是红色,要么是黑色。 性质1:红黑树的每个节点要么是红色,要么是黑色。 阅读全文
posted @ 2020-04-30 00:24 Conan-Peng 阅读(9238) 评论(0) 推荐(1)
摘要: 把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对其他实体进行信息隐藏。 public成员,可以被任意实体访问 private成员,只允许本类的成员函数、友元类或友元函数访问 protected成员,只允许被本类和派生类的成员函数访问。 阅读全文
posted @ 2020-04-29 01:05 Conan-Peng 阅读(195) 评论(0) 推荐(0)
摘要: 重载:函数名相同,函数参数不同(顺序,个数,类型),不关心返回值类型。 重写(覆盖):派生类中重新定义,函数名、参数列表、返回值类型都必须相同。基类中被重写的函数必须有virtual关键字修饰。 隐藏:派生类的函数屏蔽了预期与其同名的基类函数。(只管函数名,不管参数列表) 阅读全文
posted @ 2020-04-29 00:53 Conan-Peng 阅读(130) 评论(0) 推荐(0)
摘要: 静态绑定在编译期完成,指针指的是静态对象。 动态绑定在运行期完成,虚函数中的指针指向对象。(基类指针指向派生类对象) 在C++中动态绑定是通过虚函数实现的。基类指针调用虚函数时发生动态绑定。基类指针既可以指向基类对象,又可以指向派生类对象,这是动态绑定的关键。指针调用的虚函数在运行时确定,被调用的虚 阅读全文
posted @ 2020-04-29 00:45 Conan-Peng 阅读(234) 评论(0) 推荐(0)
摘要: 1. malloc/free 是标准库函数,new/delete是C++运算符 2. malloc失败返回空,new失败抛出异常 3. new/delete会调用构造,析构函数,malloc/free不会 4. new返回有类型的指针,malloc返回无类型的指针 5. 使用new操作符申请内存分配 阅读全文
posted @ 2020-04-29 00:28 Conan-Peng 阅读(210) 评论(0) 推荐(0)
摘要: 首先要明确一点,派生类的对象可以被当做基类对象对待,因为派生类包含基类的所有成员。反之则不成立。 因此,将基类指针指向派生类对象是安全的。此时这个基类指针只能调用基类的成员函数。 如果试图用基类指针调用派生类才具有的成员函数,编译器会报错。虚函数的出现可以解决这个问题。通过基类指针在派生类对象上调用 阅读全文
posted @ 2020-04-28 19:49 Conan-Peng 阅读(2194) 评论(0) 推荐(0)
摘要: 派生类在创建对象时会先调用基类的构造函数,调用的顺序和继承基类的顺序相同,然后才会调用自己的构造函数。 在派生类中,析构函数各部分的执行顺序和构造函数的调用顺序刚好相反,即派生类的析构函数先对其新增的一般成员进行析构,然后对新增的成员对象进行析构,最后按照与其“继承基类相反的顺序”调用基类的析构函数 阅读全文
posted @ 2020-04-28 18:46 Conan-Peng 阅读(266) 评论(0) 推荐(0)