c++
文章平均质量分 66
qq_33417547
我是陕西人
展开
-
c++模版链表的实现
模版链表的实现原创 2016-09-13 19:05:45 · 325 阅读 · 0 评论 -
new delete与malloc free的区别
相同点:都可用于申请动态内存和释放内存。不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,原创 2017-05-14 10:16:40 · 1142 阅读 · 3 评论 -
new delete 解析
new和delete是什么程序运行时,计算机的内存被分为4个区域:程序代码区,全程数据区,栈和堆。其中堆上的内存可以被用户自由分配和释放。C语言中提供了malloc(还有calloc和realloc)和free函数来进行动态内存管理。C++中则提供了new和delete运算符来进行动态内存管理。因为new和delete是运算符,所以性能要更高效(没有函数调用时的开销),使用更灵活。原创 2017-05-13 12:07:45 · 1187 阅读 · 3 评论 -
静态成员和静态成员函数
一,静态数据成员静态数据成员是一种特殊的数据成员,它以关键字static开头。静态数据成员是不属于某一个对象的,它属于所有这个类的对象,或者说它属于这个类。静态数据成员在内存中只占一份内存单元。每个对象都可以引用这个静态数据成员,静态数据成员对所有对象都是一样的。1、如果只定义了类,而未定义对象,则类的一般数据成员是不占内存空间的,但是静态数据成员不同,因为它不原创 2017-05-13 11:20:17 · 689 阅读 · 0 评论 -
运算符重载
一.什么是运算符重载:C++预定义中的运算符的操作对象只局限于基本的内置数据类型,但是对于我们自定义的类型(类)是没有办法操作的。但是大多时候我们需要对我们定义的类型进行类似的运算,这个时候就需要我们对这么运算符进行重新定义,赋予其新的功能,以满足自身的需求。二.运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的原创 2017-05-13 10:30:34 · 1291 阅读 · 0 评论 -
函数的重载,重写,隐藏
重载:1、在同一作用域中。2、函数名相同、参数个数或参数类型不同,返回值可同可不同。3、重载又称为静态多态,静态绑定,静态决议等。因为要实现重载,所以C++和C的命名方式有所不同。重载主要是为了减轻程序员对函数名的记忆负担,让所有功能相似的函数使用同一名字。4、任何程序都仅有一个 main 函数的实例。main 函数不能重载。5、函数重载和重复申明的区别:如果两个函原创 2017-05-13 09:58:30 · 745 阅读 · 0 评论 -
指针和引用的区别
关于指针的博客前边写过,可以去看看:点击打开链接今天只要看看引用的知识:什么是引用:"引用"是C++中引入的新的变量类型,它的作用是为一个变量起一个别名。int a=10;int &b=a;b是a的引用,即b是a的别名,a和b的作用相同。对a所进行的操作的结果与对b所进行的操作结果是完全相同的。声明b为引用类型并不需要为b另外开辟空间来存放b,a和b代表同一块空间原创 2017-04-19 11:11:42 · 714 阅读 · 0 评论 -
判断元素入栈,出栈顺序的合法性
题目要求:元素出栈,入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)合法,入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,1,2)不合法。定义一个栈s,入栈序列为stack_in,出栈序列为stack_out,长度分别为len_in和len_out。如果两个序列为空或长度不等,则不合法,出栈序列和入栈序列必须长度相等且不为空才能进原创 2016-09-17 09:51:24 · 4140 阅读 · 0 评论 -
迷宫求解——附栈的实现
今天我们来完成一个简单的迷宫,首先我们需要一个迷宫地图在文件中,方便我们在文件中读取它。这是地图:然后我们就进行读取地图,并保存地图到数组里面,这样很方便给出坐标。接下来我们就要考虑怎么走了,其实很简单,我们只需让当前位置经行查找,上下左右只要是通路就移动到下一个位置,直到找到出口。那如果走到死胡同了该如何,其实也很容易,这里我们就需要运用回溯法来解决问题。那么什么事回溯法呢?原创 2016-09-16 15:26:44 · 1133 阅读 · 0 评论 -
c++智能指针
在c++中,动态内存管理是通过运算符new来开辟空间的,然后用delete来释放这个空间。 动态内存很容易出现问题,因为确保在正确的时间释放内存是很困难的。有时我们会忘记释放内存,这样就会造成内存泄露;有时在还有指针引用内存的时候就释放了它,这时就会出现引用非法内存的指针。举个例子:void Test (){int* p1 = new int(1);bool isEn原创 2016-09-03 09:31:10 · 396 阅读 · 0 评论 -
深拷贝 —— String类的实现
在学习c++的时候我发现string的功能很强大,我觉得有必要来实现一下它,这次实现使用的时深拷贝的方法。首先我们先来看看深浅拷贝的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象 中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新原创 2016-09-04 11:33:21 · 754 阅读 · 1 评论 -
设计模式之单例模式
什么是设计模式Patterns,顾名思义,具有某种重复性规律的方案。Design Patterns,就是设计过程中可以反复使用的、可以解决特定问题的设计方法。 他并不是某种特定的方法,而是一种解决问题的思维。设计模式六大原则1. 开闭原则 意思:软件模块应该对扩展开放,对修改关闭。 举例:在程序需要进行新增功能的时候,不能去修改原有的代码,而是新增代码,实现一个热插拔的效果(热插拔:灵活的原创 2017-08-01 17:25:15 · 332 阅读 · 0 评论