网站大量收购独家精品文档,联系QQ:2885784924

[工学]类与对象.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]类与对象

C++程序设计教程 第九章 对象生灭 Chapter 9 Object Birth Death 第九章 1.1 构造函数设计 作用:使对象从诞生之时起便有明确的状态. 特征: 构造函数名:与类同名。该过程产生对象,而不是捆绑对象的成员函数调用,因而它是特殊的成员函数 形式:无返回值,可有参数列表 使用方法:不同于捆绑对象的成员函数调用,是在对象定义时自动被编译器执行,因此不需要显式调用。例如:Complex a(1.0,2.5) 允许重载-------- 1.2 构造函数重载 ( Constructor Overload ) 构造函数可以重载,也可以默认实参:例:9-1-1 class Date{ public: Date(const string s); Date(int y=2003, int m=12, int d=1); // ... private: int year,mon,day; }; int main(){ Date d(“2006-12-26”); Date e(2000, 12, 25); Date f(2001, 10); Date g(2002); Date h(); // ... } 构造函数注意事项 1.若类中没有定义构造函数,则系统会在后台提供一个无参构造函数: class Date{ public: // 相当于定义了Date(){} }; int main(){ Date d; // ok // ... } 构造函数注意事项 2.任何其他的构造函数定义,都将阻止默认无参构造函数的产生: class Date{ public: Date(int y, int m, int d){} // ... }; int main(){ Date d; // error // ... } 构造函数注意事项 1.3 类成员初始化的另一种方法 (Member Initialization lists 成员初始化列表) class Date{ public: Date(int y,int m,int d):year(y),mon(m),day(d) { }; private: int year,mon,day; }; int main(){ Date t(1993,3,29); … } 1.3 类成员初始化的另一种方法 (Member Initialization lists 成员初始化列表) 类成员初始化的问题:类的成员是复杂对象(称为--组成(composition) ) 1.3 类成员初始化的另一种方法 (Member Initialization lists 成员初始化列表) class Date{ public: Date(){year=1990;mon=2;day=15}; private: int year,mon,day; }; class Student{ private: string name; Date birth; public: //构造函数需要完成对name 和 birth 的初始化 }; int main(){ Student s(“Randy“);//其他形式? } 若需要调用对象成员的有参构造函数,须满足该构造函数声明的规格。采用成员初始化列表使子对象首先完成初始化。 1.4 构造函数的调用时间与顺序 基本原则1:当对象第一次创建时,系统会自动调用该类的构造函数。 如: Date a; 则系统会自动调用Date::Date()的函数体: 1.4 构造函数的调用时间与顺序 基本原则2:按对象或变量创建的语句运行顺序: Date a,b; 1.4 构造函数的调用时间与顺序 1.4 构造函数的调用时间与顺序 基本原则4:成员对象的构造顺序按类定义的出现顺序,最后执行自身构造函数: class A{ B b; C c; D d; public: A(){} // ... }; int main(){ A a; } 全局数据区: 全局对象,静态全局对象,静态局部对象,常对象 类的静态数据成员也存放在该数据区 栈区: 局部对象 动态存储区(也称堆区): 如:用new申请空间分配的对象 1.5 对象的构造位置---堆区-- new的使用 当用户需要自主申请内存分配时,new运算符自动生成正确长度的对象并调用对象构造函数和返回正确类型的指针. new自动调用

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档