- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++程序设计教程(第二版) 第九章 对象生灭 Chapter 9 Object Birth Death 第九章内容 1. 构造函数设计 ( Constructor Design ) 初始化要求:对象与变量的不同在于对象对应于事物,要求从诞生之时起便有明确的意义. 封装性要求:初始化不是简单的参数与成员对应,而是联系参数到成员的过程. 构造函数名:该过程产生对象,而不是捆绑对象的成员函数调用,因而它是特殊的成员函数 形式:与变量的定义形式保持一致.构造函数原则上不能失败,也没有返回形式 例外:一次性对象构造,没有对象名,与强制转换的形式一致,因而它是一个特定类型的对象. 2. 构造函数重载 ( Constructor Overload ) 构造函数可以重载,也可以参数默认: class Date{ public: Date(const string s); Date(int y=2003, int m=12, int d=1); // ... }; int main(){ Date d(“2006-12-26”); Date e(2000, 12, 25); Date f(2001, 10); Date g(2002); Date h(); // ... } 若类中没有定义构造函数,则系统会默认定义一个无参空函数: class Date{ public: // 相当于定义了Date(){} }; int main(){ Date d; // ok // ... } 任何其他的构造函数定义,都将阻止默认无参空函数的产生: class Date{ public: Date(int y, int m, int d){} // ... }; int main(){ Date d; // error // ... } 3. 类成员初始化 ( Class Member Initializations ) class StudentID{ int a; public: StudentID(){ a = 1; cout“StudentId: a\n; } }; class Student{ string name; StudentID id; public: Student(string n=noName){ cout“Student: + n +\n; name = n; } }; int main(){ Student s(Randy); } 若要调用对象成员的有参构造函数,须显式调用,见左边形式.其运行结果为:StudentId: 98Student: RandyStudentId: 0Student: Jenny 4. 构造顺序 ( Constructing Order ) 对象或变量创建的语句行顺序与运行顺序: int a=3; if(a==2) Date d; Date e; 则对象创建的语句行顺序为: Date d---Date e 对象创建的运行顺序为: Date e 成员对象的构造顺序按类定义的出现顺序,最后执行自身构造函数: class A{ B b; C c; D d; public: A(){} // ... }; int main(){ A a; } 则构造顺序为bcd,然后执行A的构造函数的花括号体{} 全局数据区: 全局对象,静态全局对象,静态局部对象,常对象 类的静态数据成员也存放在该数据区 栈区: 局部对象 (根据不同编译器的实现方法,临时对象可能在栈区,也可能在动态存储区,也可能一部分在栈区,一部分在动态存储区) 动态存储区(也称堆区): 用new申请的对象 除此之外,还可以指定特殊地址空间,存放对象 5. 拷贝构造函数 ( Copy Constructors ) 对象本体与对象实体: 对象本体也是对象主体,对象实体则还包括属于对象的衍生物,如,某个人体是人类对象的主体,然而某人还拥有父母,房产等属于某人的世系或资产,描述人的属性不仅仅只是人体数据. 从形式上看,对象除了包括数据成员,还包括指向数据的指针. 拷贝构造函数: 以本类对象为常量引用参数的构造函数: class Date{ public: Date(); Date(const Date d); // . . . }; Date x; //调用无参构造函数 Date y(x); //调用拷贝构造函数 默认拷贝构造函数: 若
您可能关注的文档
最近下载
- JC∕T 2253-2014 脂肪族聚氨酯耐候防水涂料.pdf VIP
- 基础测绘1:2000数字地形图更新技术设计书1.pdf VIP
- 《泡沫铝应用简介》课件.ppt VIP
- DB14_T 722-2025 公路隧道照明设计规范.pdf VIP
- 初中阶段心理健康教育中的心理危机预防与干预教学研究课题报告.docx
- 瑞士ABB MBGAS-3000 烟气在线监测系统操作说明.pdf VIP
- 飞行原理(第2版)全套教学课件.pptx
- 公共危机管理概论(第二版)王宏伟-第七章.pptx VIP
- 2023年湖北省黄石市中考生物试卷【附答案】.doc VIP
- (2024年秋新改)教科版一年级科学上册全册教案.pdf VIP
文档评论(0)