Chap类与对象.pptVIP

  1. 1、本文档共70页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6讲 类与对象的进一步讨论 对象指针、数组、参数 变量作用域 this指针 类对象作为成员 静态成员 友元 类模板 1-1 对象指针 创建对象时,系统会为该对象分配相应的存储空间存放其数据成员(并调用构造函数),其起始地址就是对象的地址即指针。 对象指针:指向对象的指针。 创建对象指针: 类名 *对象指针名; Circle cir, *p=cir; //创建了一个对象cir和对象指针p 创建对象指针时并不调用构造函数,只是为指针变量分配用于存放地址的空间,并没有创建对象。 对象指针对对象成员访问 - 例:p-setRadius(4.3); .例: (*p1).setRadius(4.3); 在堆中创建动态对象 用new为对象申请空间时需调用构造函数,此时创建了一个对象。如: Circle *p1= new Circle; //调用无参的构造函数 Circle *p2=new Circle(2.5); //调用有参的构造函数 Circle *p3= new Circle [3]; 此时必须使用无参的构造函数,否则不能动态创建!! 用delete命令为对象删除空间 delete p1; delete []p3; //[]不可省略,否则出现运行错误 此时会自动调用析构函数。 1-2 对象数组及其创建 对象数组:数组中的每个数组元素都为同一类的对象。 对象数组的声明根据构造函数的不同而不同: 若有不需参数的构造函数(用户没定义构造函数,使用默认构造函数;有用户定义的不带参数或带默认参数的构造函数),则定义数组时可不提供实参(初始化数据),其形式为: 类名 数组名[常量表达式]; 若只有用户自定义的有参构造函数,则必须在创建对象数组时为构造函数提供实参(初始化数据),其形式为: 类名 数组名[常量表达式]={类名(参数表),…,类名(参数表)}; 当构造函数只需提供一个参数时也可写为: 类名 数组名[常量表达式]={常量1,常量2,…,常量n}; 常量表达式表示数组的大小。创建对象数组时,系统为整个数组分配存储空间(存储每个对象元素的数据成员),并为每个对象元素调用相应的构造函数。 创建对象数组例 创建对象数组: 使用无参构造函数初始化数组中的元素,此时各个元素中的radius成员值均为1. Circle c[3]; 使用有参构造函数初始化对象元素 Circle c[3]={Circle(1),Circle(2),Circle(3)}; 当构造函数只需提供一个参数时也可写为 Circle c[3]={1,2,3}; 访问数组元素对象的各公有成员: double t1=c[1].getRadius(); 对象数组范例:计算数组中所有圆的面积之和 1-3 对象作为函数参数 对象可作为函数的参数,分为传值方式和引用方式 传值方式: 对象值:为形参对象分配空间,调用复制构造函数,需要额外的时间和内存空间; 对象指针:为形参对象指针分配空间,减少时间和内存空间的消耗。 引用方式:一般使用较多 不需要额外的时间和内存空间,而且使用对象引用参数比使用指针参数更为简单。 例:对象作为参数 对象值作为参数 对象指针作为参数 对象引用作为参数 参数:区分三种形式 2 变量作用域 变量的作用域:是指程序中变量有效的区域。变量的作用域分为:全局域、局部域和类作用域。 局部变量:在函数内(或块内)声明,只能在函数内部使用。 全局变量:在所有函数和类外声明。如果局部变量与全局变量同名,则在局部变量作用域同名全局变量被屏蔽,使用的是局部变量。 类作用域:即类声明和类的实现范围。类的所有成员在类作用域中相互间具有无限制的访问权,类的所有成员都可以访问该类的所有数据成员和成员函数。而类内成员对类作用域以外的数据或函数进行的访问是受限制的;同样,类作用域以外的数据或函数对类内成员的访问也是受限制的(依据成员的访问权限)。如果成员函数内一个局部变量与一个数据成员同名,在该函数内同名数据成员将被屏蔽,使用的是局部变量。 利用作用域操作符区分全局变量和类的数据成员 #include iostream.h int pp=0; //全局变量 class Ctest { public: int pp; void rp(); private: int number; float socre; }; void Ctest::rp() //rp()函数为test类的成员函数 { ::pp=11; //该变量为全局变量pp pp=100; //该变量为test类的数据成员 } void main(

文档评论(0)

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

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

1亿VIP精品文档

相关文档