随笔分类 -  C++

摘要:在multimap中,同一个键关联的元素必然相邻存bai放。基于这个事实,就可以将某个键对应的值一一输出。 1、使用find和count函数。count函数求出某个键出现的次数,find函数返回一个迭代器,指向第一个拥有正在查找的键的实例。 2、使用lower_bound(key)和upper_bo 阅读全文
posted @ 2020-12-18 16:43 zeroPatrick 阅读(408) 评论(0) 推荐(0)
摘要:静态成员函数与普通成员函数的根本区别在于:普通成员函数有 this 指针,可以访问类中的任意成员;而静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)。 一、面向过程设计中的static1.静态全局变量在全局变量前,加static,该变量被定义为一个静态全局变量 作 阅读全文
posted @ 2020-12-17 17:24 zeroPatrick 阅读(327) 评论(0) 推荐(0)
摘要:const用法总结 1、修饰常量时: 1 2 const int temp1; //temp1为常量,不可变 int const temp2; //temp2为常量,不可变 2、修饰指针时: 主要看const在*的前后,在前则指针指向的内容为常量,在后则指针本身为常量; 1 2 3 4 const 阅读全文
posted @ 2020-12-16 19:57 zeroPatrick 阅读(292) 评论(0) 推荐(0)
摘要:在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该 阅读全文
posted @ 2020-12-16 19:52 zeroPatrick 阅读(102) 评论(0) 推荐(0)
摘要:如果要在派生类中重新定义基类的方法,通常应将基类方法声明为虚的。这样,程序将根据对象类型而不是引用或指针的类型来选择方法版本。 为基类声明一个虚析构函数也是一种惯例。如果析构函数是虚的,将调用相对应对象类型的析构函数。因此,如果指针指向的是派生类的对象,将调用派生类对象的析构函数,然后自动调用基类的 阅读全文
posted @ 2020-12-16 14:20 zeroPatrick 阅读(68) 评论(0) 推荐(0)
摘要:首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。 1、简介 假设我们有下面的 阅读全文
posted @ 2020-12-16 13:59 zeroPatrick 阅读(104) 评论(0) 推荐(0)
摘要:公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 1. 公有继承(public) 基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。 2. 私有继承(private) 阅读全文
posted @ 2020-12-16 13:51 zeroPatrick 阅读(1019) 评论(0) 推荐(0)
摘要:堆和栈的区别 主要的区别由以下几点: 1、管理方式不同; 2、空间大小不同; 3、能否产生碎片不同; 4、生长方向不同; 5、分配方式不同; 6、分配效率不同; 管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。 空间大小: 阅读全文
posted @ 2020-12-15 20:51 zeroPatrick 阅读(351) 评论(0) 推荐(0)
摘要:BSS段 可执行程序包括BSS段、数据段、代码段(也称文本段)。 BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。 数据段包括 阅读全文
posted @ 2020-12-15 20:36 zeroPatrick 阅读(277) 评论(0) 推荐(0)
摘要:1、 堆栈尺寸设置过小 由堆栈溢出的定义便可知,堆栈尺寸设置过小时,其能储存的内容过小,容易发生溢出。 2、递归层次太深或函数调用层次过深导致堆栈溢出 调用函数时,系统将为调用者构造一个由参数表返回地址组成的活动记录,并将其押入到由系统提供的运行时刻栈的栈顶,然后将程序的控制权转移到被调函数。若被调 阅读全文
posted @ 2020-12-15 20:01 zeroPatrick 阅读(841) 评论(0) 推荐(0)
摘要:RAII (Resource Acquisition Is Initialization),也称为“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的惯用法。C++标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。简单的说,RAII 的做法是使用一个对象,在其构造时获 阅读全文
posted @ 2020-12-15 18:14 zeroPatrick 阅读(136) 评论(0) 推荐(0)
摘要:转载自:https://blog.csdn.net/q1449516487/article/details/100598325 概念 在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单 阅读全文
posted @ 2020-12-15 15:35 zeroPatrick 阅读(116) 评论(0) 推荐(0)
摘要:【转载自 C++prime 第六版】 C++(自C++11起)使用四种不同的方案来存储数据,这些方案的区别就在于数据保留在内存中的时间。 1. 自动存储: 在函数定义中声明的变量(包括函数参数)的存储持续性为自动的。它们在程序开始执行所属的函数或代码块时被创建,在执行完函数或代码块时,它们使用的内存 阅读全文
posted @ 2020-12-14 21:07 zeroPatrick 阅读(1816) 评论(0) 推荐(0)
摘要:【转载】https://blog.csdn.net/guaiguaihenguai/article/details/81160310 程序要运行起来,必须要经过四个步骤:预处理、编译(转换成汇编指令)、汇编(转换成二进制文件)和链接。接下来通过几个简单的例子来详细讲解一下这些过程。 对于上边用到的几 阅读全文
posted @ 2020-12-14 19:51 zeroPatrick 阅读(117) 评论(0) 推荐(0)
摘要:【转载】https://blog.csdn.net/qq_24656927/article/details/82456097 一.预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶 阅读全文
posted @ 2020-12-14 16:41 zeroPatrick 阅读(317) 评论(0) 推荐(0)
摘要:如果文件名包含在尖括号中,则C++编译器将在存储标准头文件的主机系统的文件系统中查找;如果文件名包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录(或其他目录,这取决于编译器)。如果没有在那里找到头文件,则将在标准位置查找。 因此,在包含自己的头文件时,应使用引号而不是尖括号。 阅读全文
posted @ 2020-12-14 16:13 zeroPatrick 阅读(123) 评论(0) 推荐(0)
摘要:const int Month = 12; #define PI 3.14 const 的优点: 1. 能够明确指定类型,define只是简单的字符串替换,没有类型检查。而const有对应的数据类型 2. 可以使用C++的作用域规则将定义限制在特定的函数或文件中 3. 可以将const用于更复杂的类 阅读全文
posted @ 2020-12-13 23:21 zeroPatrick 阅读(96) 评论(0) 推荐(0)
摘要:转载自:https://blog.csdn.net/qq_38810767/article/details/85265541 malloc memory allocate;calloc clear allocate; ralloc re-allocate 1. malloc/calloc/reall 阅读全文
posted @ 2020-12-13 22:22 zeroPatrick 阅读(478) 评论(0) 推荐(0)
摘要:1、malloc与free是c++/c语言的标准函数,new/delete是C++的运算符。 2、new返回指定类型的指针,并且可以自动计算出所需要的大小。 malloc必须用户指定所申请内存的大小,并且默然返回类型为void*,必须强行转换为实际类型的指针。 int *p = new int; / 阅读全文
posted @ 2020-12-13 16:28 zeroPatrick 阅读(84) 评论(0) 推荐(0)
摘要:自动变量在程序执行到其所属的代码块(由 { } 符号来标识,通常是函数定义)时产生,在离开该代码块时终止。静态变量在整个程序周期内都存在。 阅读全文
posted @ 2020-12-13 15:38 zeroPatrick 阅读(169) 评论(0) 推荐(0)