C++核心编程(黑马程序员课程讲义).pdfVIP

C++核心编程(黑马程序员课程讲义).pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++ 核⼼编程(⿊马程序员课程讲义) 本阶段主要针对C++⾯向对象编程技术 1. 内存分区模型 C++程序在执⾏时,将内存⼤⽅向划分为4个区域: 代码区:存放函数体的⼆进制代码,由操作系统进⾏管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器⾃动分配和释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收 内存四区的意义:不同区域存放的数据,赋予不同的⽣命周期,给予更⼤的灵活编程 1.1 程序运⾏前 在程序编译后,⽣成了exe可执⾏程序,未执⾏该程序前分为两个区域: 代码区: 存放CPU执⾏的机器指令(⼆进制) 代码区是共享的,共享的⽬的是对于频繁被执⾏的程序,只需要在内存中有⼀份代码即可(避免资源浪费) 代码区是只读的,使其只读的原因是防⽌程序意外地修改了它的指令 全局区: 全局变量和静态变量存放在此 全局区还包含了常量区,字符串常量和const修饰的全局变量(即全局常量)也存放在此(const修饰的局部变量,即局部常量,是和局部 变量放在⼀块) 该区域的数据在程序结束后由操作系统释放 总结: · C++中在程序运⾏前分为代码区和全局区 · 代码区的特点是共享和只读 · 全局区中存放全局变量,静态变量,常量 · 常量区中存放了字符串常量和const修饰的全局变量 · 局部变量和const修饰的局部变量不在全局区(在栈区) 1.2 程序运⾏后 栈区: 由编译器⾃动分配释放,存放函数的形参、局部变量等 注:不要返回局部变量的地址,栈区开辟的数据由编译器⾃动释放 堆区: 由程序员分配释放,若程序员不释放,程序结束时由操作系统回收 在C++中主要利⽤new关键字在堆区开辟内存 总结: · 堆区数据由管理员开辟和释放 · 堆区(⾃由存储区)数据利⽤new关键字进⾏开辟内存 1.3 new操作符 C++中利⽤new操作符在堆区开辟数据 堆区开辟的数据,由程序员⼿动开辟,⼿动释放,释放利⽤操作符delete 语法:new 数据类型 new 数据类型 告诉程序需要适合存储该数据类型的内存,然后它找到这样的内存,并返回其地址 1.4 delete运算符 使⽤delete时,后⾯要加上指向new分配的内存块的指针(即⽤于new的地址) 对空指针使⽤delete是安全 注意:⼀定要配对的使⽤new和delete,否则将发⽣内存泄漏。 总结: 使⽤new和delete应遵守的规则有( C++ Primer Plus P87): · 不要⽤delete来释放不是new分配的内存 · 不要使⽤delete释放同⼀个内存块两次 · 如果使⽤new[ ]为数组分配内存,则应使⽤delete[ ]来释放 · 如果使⽤new为⼀个实体分配内存,则应使⽤delete来释放 · 对空指针使⽤delete是安全 2. 引⽤ 2.1 引⽤的基本使⽤ 作⽤:给变量起别名 语法:数据类型 别名 = 原名 ( 数据类型和原来的变量的类型是⼀样的) 引⽤也是地址的别名 引⽤的本质是⼀个指针常量,指针指向的值可以修改,但是指针指向的地址不能改变,占四个字节 2.2 引⽤注意事项 ①引⽤必须初始化 ②引⽤在初始化后,不可以改变(指针常量) 2.3 引⽤做函数参数(引⽤传递) 作⽤:函数传参时,可以利⽤引⽤的技术让形参修饰实参(C++Primer Plus P212) 优点:通过引⽤参数产⽣的效果同按地址传递是⼀样的,引⽤传递可以简化指针修改实参 2.4 引⽤做函数返回值 作⽤:引⽤是可以作为函数的返回值存在 ⽤法:如果函数的返回值是引⽤,则这个函数调⽤可以作为左值 注意:不要返回局部变量引⽤ (C++Primer Plus P312) 2.5 引⽤的本质 本质:引⽤的本质在C++内部实现是⼀个指针常量 2.6常量引⽤ 作⽤:常量引⽤主要⽤来修饰形参,防⽌误操作 在函数形参列表中,可以加const修饰形参,防⽌形参改变实参 3.函数提⾼ 3.1函数默认参数 在C++中,函数的形参列表中的形参列表是可以有默认值 语法:返回值类型 函数名(形参 = 默认值){ } 注意: ①如果某个位置已经有了默认参数,那么从这个位置后,从左向右都必须有默认值 ②如果函数声明有默认参数,函数实现就不能有默认参数(声明和实现只有⼀个能有默认参数) 3.2函数占位参数 C++中函数的形参列表⾥可以有占位参数,⽤来做占位,调⽤函数时必须填补该位置 语法:返回值类型 函数名 (数据类型){ } 3.3函数重载 3.3

文档评论(0)

152****1502 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档