4.2 自由存储.pptVIP

  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文档。上传文档
查看更多
4.2 自由存储

4.2 自由存储 4.2 自由存储 4.2 自由存储 4.2 自由存储 自由存贮涉及c++的动态存贮分配系统,允许用户程序在执行中动态地为对象分配存贮。C语言亦有相应的动态分配存贮及释放空间命令 malloc 和free( ),而C++使用new 和delete 较C 的相应命令更多的益处(5条)(P140) 1.new 与delete 语法 [ new 语法] var-type *pointer-var ; pointer –var = new var –type (new _initializer) 执行结果: 以自由存贮空间中获得一块类型为var-type 的存贮空间,返回其首址。 如(new-intializer)非空,可以为该空间初始化。如分配失败,会返回一个空指针。 [delete 语法] delete pointer-var ;或 delete [ ] pointer-var , 功能 : 释放new新建立的存贮空间,要求delete的操作数必须是new 的返回指针。 [关于new 用法注意] 4条 (1)Var-type 可以为任意类型(含函数指针),但不许为函数类型; (2)Var-type 为数组类型时,new 返回的指针必指向数组的第一个员素; (3)建立多维数组时,需要提供所有维的大小(否则出错); (4)可以用new 为函数指针数组分配空间,如: 整函数 int f( ) , 类型为 int ( ) ; 指向该函数指针类型:int (*) ( ) ; 该函数指针数组可定义成: int (*[10]) ( ) 可用new 为以上数组分配空间: new ( int [*[10] ( ) ] 2.new 与delete 之典型用法 (1)??? 动态分配与释放单个数据存贮区 语法为: type *p; p=new type; ………….. delete p; (2) 用new运算符初始化单个数据存贮区 type *p p=new type (……)←带参数:type …… delete p (3)? 动态分配数组的存贮空间 ① 一维数组 语法为: type *p p =new type [s] //s 指示了数组中元素个数,可以是常量或表达式不可省 …… delete [ ]p 注意:分配一个数组时,不能对之初始化。 ② 二维数组 语法为: type *p [常量1] [常量2]…… [常量n-1] p = new type [s ] [常量1] [常量2]…… [常量n-1] //s 指定数组中第一维元素个数,可以常量或表达式,不可省略。 可通过p[i1] [i2] ……[in-1]方式访问数组元素。 (4)? 为对象动态分配存贮区 可以对任何合法类型(含对象)分配存贮空间。通过调用构造函数(带参数和不带参数的)实现。 语法: X *P ; X *P P= new type ; 或 p = new type (……) // 带参构造函数 …… …… delete p; delete p; 例4-14 (P140) [注意] ① pobj = new three-d (5,6,7 ) // new 在堆上为对象分配存贮空间调用three-d 构造函数 ②friend osfream operator (ostream stream ,three-d obj) //重载了运算符“”,运算符“”的第1个操作数为cout, 是标准类类型ostream 对象的引用(ostream stream = cout) ③ 可利用友元函数重载输入运算符“”注意第2个参数必须是对象的引用 (istream operator (istream s, thr

文档评论(0)

ldj215323 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档