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