静态成员动态存储分配.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文档。上传文档
查看更多

*intmain(){Circlec1(1),c2(7),c3(6.9); coutareaofc1=c1.getArea()endl; coutareaofc2=c2.getArea()endl; coutareaofc3=c3.getArea()endl; return0;}第28页,共39页,星期日,2025年,2月5日*静态成员动态存储分配第1页,共39页,星期日,2025年,2月5日*动态存储分配(难点)程序在内存中的分布new和delete运算符复制构造函数——浅复制和深复制析构函数类的静态成员分为静态数据成员和静态成员函数静态数据成员如何初始化?是通过构造函数吗?静态成员函数的定义和调用规则多文件结构主要内容第2页,共39页,星期日,2025年,2月5日*理解复制构造函数的作用及其调用时机,能正确完成含有资源的对象复制理解析构函数的作用和调用时机,能正确利用析构函数完成对象相关资源的清理能正确使用静态成员解决实际问题重点、难点第3页,共39页,星期日,2025年,2月5日*回顾--对象的初始化对象在定义的时候对其数据成员进行初始化,称为对象的初始化C++中对象的初始化由一个特殊的成员函数(构造函数)完成其主要功能是创建并初始化对象如果用户不自己定义构造函数,则编译器会自动生成一个默认的构造函数。第4页,共39页,星期日,2025年,2月5日*构造函数定义格式:类名::类名(参数表){函数体}构造函数名与类名相同,且不指定函数返回值一般情况下,应该构造函数定义为公有成员编译系统自动生成的默认构造参数其形式为:类名::类名(){}第5页,共39页,星期日,2025年,2月5日复制构造函数主要功能:用一个已知的对象来初始化一个同类对象具体声明格式:类名::类名(const类名对象名)复制构造函数只有一个参数,是该类对象的引用若用户没有显式定义复制构造函数,编译器会自动生成一个默认的复制构造函数,其功能是把已知对象的每个数据成员都复制到新定义的对象中第6页,共39页,星期日,2025年,2月5日对象的清理工作对象的清理工作由析构函数完成主要功能:在对象生存周期即将结束的时刻,由编译系统自动调用来完成一些清理工作在程序块执行完最后一条语句后,系统自动调用析构函数语法格式为:类名::~类名(){函数体}第7页,共39页,星期日,2025年,2月5日*设计一个整型的Vector类设计一个动态的整型数组类Vector,它能根据用户提供的参数动态生成元素,即Vectorv1;//生成包含0个元素的空数组Vectorv2(n);//生成包含n个元素的数组Vectorv2(n,m);//生成包含n个元素,每个元素值为m的数组Vector有别于C语言中的静态数组,它有体现数组大小的成员size思考:Vector具有哪些成员?如何在程序运行起来以后,根据用户从键盘输入的n和m创建数组?第8页,共39页,星期日,2025年,2月5日*分析Vector的数据成员有:intSIZE;//数组当前元素个数intelems[n];???还是int*elems;???Vector的成员函数有:构造函数(3个,分别实现默认初始化和带参初始化)返回下标为i的元素,intat(intindex);输出数组所有元素,voidprint();返回数组当前元素个数,intsize();动态创建数组需要用到动态存储分配静态数组指数组长度在编译时即定义好,在整个程序运行过程中,大小无法改变动态数组在程序运行中,可根据需要重新指定大小第9页,共39页,星期日,2025年,2月5日*试着思考:为什么定义数组的时候下标必须是常量?intarr[10];为什么不能是:intm,intarr[m];scanf(“%d”,m);一个已经编译完成的C程序取得并使用4块在逻辑上不同并且用于不同目的的内存区域。程序的内存映象栈堆静态存储区程序区第10页,共39页,星期日,2025年,2月5日*程序运行时需要占用多大的空间需要在编译时确定,便于操作系统为程序分配适当的内存空间。从静态存储区分配:程序的全局变量和静态变量都在这里分配,且在编译时已经分配好,在程序终止前被操作系统回收。在栈上创

文档评论(0)

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

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

1亿VIP精品文档

相关文档