![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 84
北鼻耷拉吧啦舅
向钱看,向厚赚
展开
-
函数调用堆栈,调用约定
堆栈的具体作用:1、传递参数(为被调用函数提供参数)2、保存局部变量3、保存中间变量4、在系统中用堆栈保存任务的状态(例如各个寄存器的值)1.什么是堆栈编译器一般使用堆栈实现函数调用。堆栈是存储器的一个区域,嵌入式环境有时需要程序员自己定义一个数组作为堆栈。Windows为每个线程自动维护一个堆栈,堆栈的大小可以设置。编译器使用堆栈来堆放每个函数的参数、局部变量等信息。函数调用经常...原创 2019-07-19 15:21:01 · 203 阅读 · 0 评论 -
c/c++关键字,相互调用
一、函数重载:在同一个作用域中,如果有多个函数的名字相同,同一个作用域,但是形参列表不同(参数类型不同或参数个数不同),返回值类型可同也可不同,我们称之为重载函数。重载的函数是通过形参列表区分的,与返回值类型无关。函数重载其实是"一个名字,多种用法"的思想,不仅函数可以重载,函数重载就是重定义;覆盖是重写。二、new和malloc的区别:1.new关键字 malloc函数2.new自由...原创 2019-07-27 16:35:02 · 251 阅读 · 0 评论 -
运算符重载
运算符重载:1.不能改变运算符的优先级2.满足和系统提供的运算符相同的逻辑3.不能创造新的运算符浅拷贝:将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引用用string生成一个对象str1,直接将对象赋给str2,共用一块内存。(原对象和新生成的对象共用一块实体)影响:1.两个对象的_str指向同一片空间,那么析构的时候这片空间必然会析构两次。2.一个的改...原创 2019-07-30 18:31:39 · 87 阅读 · 0 评论 -
string容器
实现string容器:string 具有动态性,不必担心string的内存分配;只管添加新内容进去就行了,string会自动扩展并保存新的输入。string 容器简单实现:class Iterator;class String{public:typedef Iterator iterator;String(char* pstr) :mpstr(new charstrlen(pstr)...原创 2019-04-01 15:16:31 · 174 阅读 · 0 评论 -
printf函数
其实c语言中有很多可变函数,令人头痛,例如printf()函数,其函数原型为:int printf( const char* format, …);它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式:printf("%d",i);printf("%s",s);printf(“the...原创 2019-04-01 15:18:21 · 120 阅读 · 0 评论 -
迭代器功能实现
迭代器的模式定义:提供一种方法能都依序访问某个聚合物(容器)内所含的各个元素,而又无需暴露该聚合物的内部表述方式。迭代器是一种类似指针对象,最重要的工作是进行operator和operator->进行重载,除此之外还有++,==,=这一系列运算符的重载,不可避免地曝光了很多结构的实现细节。所以将迭代器的开发任务交给结构的设计者更加高效。迭代器的简单实现:templateclass It...原创 2019-04-01 15:17:09 · 143 阅读 · 0 评论 -
指针的运算
上一篇只是简单的介绍了一下指针,指针还有很多的运算:指针的算术运算+,-指针p加法需要调整,(比如+1,是+1个单元格的大小的字节,即调整的权重为sizeof(p),或者)调整的权重为指针去掉一个号,求sizeof;简述:指针p加(减)法需要调整,调整的权重为指针去掉一个*号,求sizeof指针不可以+指针指针-指针,也需要调整,调整权重同上;上述为指针算数运算的定理;用例子来说明吧:...原创 2019-04-01 15:19:09 · 115 阅读 · 0 评论 -
C++设计模式
1.单例模式:只能生成一个对象的类首先需要将生成对象的接口析构函数和拷贝构造函数的接口屏蔽起来,其次在类中提供一个接口来生成唯一的对象为了防止临时对象的生成需要将该接口的返回值设置为类对象的引用或指针而且这个接口应该是静态的,因为如果不是该接口需要依赖函数对象调用而函数对象又要依赖该接口生成最后 静态接口只能访问静态成员变量,所以还需要定义一个静态对象的指针,并在类外初始化但是一般写出...原创 2019-04-03 22:00:34 · 160 阅读 · 0 评论 -
虚函数
Virtual 虚函数,编译阶段,类中多了一个vfptr指针指向vftable(虚表,存放虚函数的入口地址)若基类中的函数是虚函数,则派生类中同名同参的函数也是虚函数(系统自动添加)Rtti(运行时类型信息):通过运行时类型识别能够使基类的指针或者引用来件检查这些指针或引用所指对象的实际派生类型即 运行时确定对象的类型里面主要包含了两个函数typeid函数和dynamic_castTyp...原创 2019-04-03 22:04:46 · 110 阅读 · 0 评论 -
堆和栈的区别。static关键字用法
堆和栈的区别:1、管理方式不同;2、空间大小不同;3、能否产生碎片不同;4、生长方向不同;5、分配方式不同;6、分配效率不同;管理方式: 栈:系统开辟,系统释放堆:手动开辟,手动释放空间大小:一般来讲在32位系统下,堆内存可以达到2G的空间,栈空间大小是1M。碎片问题:对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来...原创 2019-04-04 23:18:18 · 658 阅读 · 0 评论 -
c/c++编译链接运行、虚拟地址空间布局
预编译:一、预编译 .i文件1、删除#define文本替换、2、#if #endif #elif3、递归展开#include4、删除注释5、添加行号和文件标识6、#pragma(设定编译器的状态或者是指示编译器完成一些特定的动作)二、编译 .s文件1、词法分析2、语法分析3、语义分析4、代码优化5、生成汇编指令三、汇编 .o1、翻译指令四、链接 .ex...原创 2019-07-19 14:19:59 · 435 阅读 · 0 评论 -
c++类默认函数
构造函数:(初始化对象所占的内存 赋予资源;可以重载 ;不依赖对象调用;不同手动调用 )1.构造函数作用是对对象进行初始化,在堆上new一个对象或在栈上定义一个临时对象时,会自动调用对象的构造函数。有初始化列表和构造函数体内赋值两种方式,初始化列表在初始化对象时更高效(每个成员在初始化列表中只能出现一次),减少了一次赋值操作,推荐此方法;以下成员变量必须在初始化列表中初始化:常量成员变量、...原创 2019-07-28 15:21:02 · 97 阅读 · 0 评论