C++
程序员小明丶
这个作者很懒,什么都没留下…
展开
-
重载、覆盖和隐藏的区别
一、重载重载简单的来说就是在同一作用域下,函数名字相同但是函数的参数列表不同(包括参数个数和参数类型)就构成了重载,但是与返回值无关。二、覆盖1、首先覆盖必须是虚函数(被virtual修饰的函数)2、必须是子类的虚函数覆盖父类的虚函数3、函数签名必须相同(参数列表必须完全一致,const属性也会影响覆盖的结果)4、返回值必须是同类或者父子类(子类的返回值要能向父类进行隐式转换)三、隐...原创 2019-08-29 20:40:23 · 843 阅读 · 0 评论 -
内存泄漏
一、什么是内存泄漏由于内存管理失败导致堆内存忘记释放或者无法释放,导致堆内存无法循环使用的情况叫做内存泄漏注意:当程序结束后所有的资源都会被系统回收,包括泄漏的内存二、内存泄漏的原因1、C语言中malloc/free函数不匹配(忘记写free或者没有执行到free),在C++中类的构造函数和析构函数中没有匹配的调用new和delete函数2、 在释放对象数组时在delete中没有使用方括...原创 2019-10-06 15:47:55 · 311 阅读 · 0 评论 -
如何写Makefile
一、什么是MakefileMakefile是一种编译脚本,里面记录的编译代码的命令的集合二、为什么要使用Makefile1、随着项目规模的不断增加,代码量越来越来多,为了更好的管理代码、协同工作,不得不把代码拆分、设计成多个文件2、由于源文件过多,编译时命令不易写,编译时间过长,而使用Makefile可以多目录编译,一次编写循环利用,有效节约编译时间3、Makefile中可以使用分支、循...原创 2019-10-05 16:41:26 · 279 阅读 · 0 评论 -
空指针与野指针
一、什么是空指针指针变量的值等于NULL(#define NULL ((void *)0))的指针叫做空指针注意:空指针不能解引用,因为此地址存储的是系统复位时要使用数据,不能访问,一旦解引用就会出现段错误二、如何避免使用空指针对来历不明的指针前要先判断是否是空指针,if(NULL == p)注意:NULL不一定是0,也有可能是1三、什么是野指针指向的内存不明确的指针叫野指针...原创 2019-10-05 11:02:32 · 471 阅读 · 0 评论 -
STL模板库中常用的容器
一、C++中容器类型C++中有两种类型的容器:顺序容器和关联容器顺序容器主要有vector、list、deque等关联容器主要有map和set注意:容器类自动申请和释放内存,因此无需new和delete操作二、迭代器类似于专门用来指向容器成员的指针,用来遍历、操作、管理容器中的成员,可以大大提高对容器的访问速度用法:容器类名<>::iterator 迭代器名*迭代器名...原创 2019-10-04 19:50:04 · 505 阅读 · 0 评论 -
解析宏函数与内联函数
一、宏函数的优点宏函数只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开销,所以调用一个宏比调用一个函数更有效率二、宏函数的缺点宏函数只是简单的文本替换,不会做类型和语法的检查,而且宏函数容易出现二义性三、内联函数的优点提高程序的运行速度(因为没有跳转,也不需要返回)四、内联函数的缺点会导致可执行文件增大(冗余),也就是牺牲空间来换取时间五、为什么内联函数会提高程序运行速...原创 2019-10-04 15:00:09 · 441 阅读 · 0 评论 -
虚函数详解
一、什么是虚函数类的成员函数前加 virtual 这种函数就叫做虚函数二、和虚函数相关的一些概念1、纯虚函数:在虚函数的声明的后面添加=0,这种虚函数就叫纯虚函数。可以不实现,但如果实现必须在类外(只能在父类的构造函数、析构函数中调用)2、抽象类:成员函数中有纯虚函数,这种类叫抽象类,抽象类不能实例化(不能创建对象),抽象类必须被继承且纯虚函数被覆盖后,由子类实例化对象,如果继承抽象类,但...原创 2019-10-04 11:07:58 · 8177 阅读 · 0 评论 -
C/C++的区别
1、C语言是面向过程的语言,C++是面向对象的语言2、C语言用的是GCC编译器(现在也可以编译C++了),C++用的是G++编译器3、布尔类型是C++的关键字,但是不是C语言的关键字4、标准输入流输出流不同(C语言中是用scanf/printf实现的C++中是靠cin/cout(cout是 ostream 类型的对象,cin 是 istream 类型的对象)类实现的)5、在C++中可以函数...原创 2019-10-03 20:16:56 · 492 阅读 · 0 评论 -
单例模式
一、什么是单例模式只能创建出一个类对象(只有一个实际的实例)的叫做单例模式。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。从具体实现角度来讲就是三点:1、单例模式的类只提供私有的构造函数。2、类定义中含有一个该类的静态私有对象。3、该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。二、为什么使用单...原创 2019-09-22 15:42:42 · 166 阅读 · 0 评论 -
C++面向对象的三个基本特征
一、三大特征封装,继承,多态。二、封装所谓封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特征之一,是对象和类概念的主要特性. 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防...原创 2019-09-19 20:03:53 · 4717 阅读 · 0 评论 -
深入理解指针
一、什么是指针指针是一种数据类型,是无符号整数,不过这个整数有特殊意义,它代表着内存编号二、为什么要用指针1、函数之间需要共享变量,全局变量虽然也可以,但是不宜过多,可以把变量的地址编号传递给其它函数来达到共享变量的目的2、优化函数之间的传参效率,函数之间采用的是值传递传参,是内存的拷贝,当传的字节数很多时,效率会很低,但是如果只是传递变量的地址只需要传4字节(64位操作系统是8字节)3...原创 2019-10-06 15:49:44 · 617 阅读 · 0 评论