- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 类和对象(一) 3.4 构造函数与析构函数 构造函数和析构函数都是类的成员函数,但它们都是特殊的成员函数,执行特殊的功能,不用调用便自动执行,而且这些函数的名字与类的名字有关。 3.4.1 构造函数 构造函数是一种特殊的成员函数,它主要用于为对象分配空间, 进行初始化。构造函数具有一些特殊的性质: (1) 构造函数的名字必须与类名相同。 (2) 构造函数可以有任意类型的参数,但不能指定返回类型。它有隐含的返回值,该值由系统内部使用。 (3) 构造函数是特殊的成员函数,函数体可写在类体内,也可写在类体外。 (4) 构造函数可以重载,即一个类中可以定义多个参数个数或参数类型不同的构造函数。 (5) 构造函数被声明为公有函数,但它不能像其他成员函数那样被显式地调用,它是在定义对象的同时被调用的。 通常,利用构造函数创建对象有以下两种方法: (1) 利用构造函数直接创建对象.其一般形式为: 类名 对象名[(实参表)]; 这里的“类名”与构造函数名相同,“实参表”是为构造函数提供的实际参数。 (2) 利用构造函数创建对象时,通过指针和new来实现。其一般语法形式为: 类名 *指针变量 = new 类名[(实参表)]; 例如: Date *date1=new Date(2007,4,28); 就创建了对象(*date1)。 3.4.2 成员初始化表 对象数据成员的初始化工作一般在构造函数中用赋值语句进行,如下例: class Date{ public: Date(int y, int m, int d); private: int year; int month; int day; }; Date::Date (int y, int m, int d) { year=y; month=m; day=d; } 但也可用带有成员初始化表的构造函数来对数据成员进行初始化工作,其一般形式如下: 类名::构造函数名([参数表])[:(成员初始化表)] { // 构造函数体 } 成员初始化表的一般形式为: 数据成员名1(初始值1), 数据成员名2(初始值2), …… 上面的例子可改为: class Date{ public: Date(int y, int m, int d); private: int year; int month; day; }; Date::Date (int y, int m, int d) : year(y), month(m), day(d) { } “成员初始化表”特别适用于对“常量类型”和“引用类型”的数据成员进行初始化,因为在C++中不允许在构造函数中对它们进行直接赋值。 如下例: 例3.8 成员初始化表的使用。 3.4.3 缺省参数的构造函数 例3.10 #includeiostream.h class Coord { public: Coord(int a=0,int b=0){ x=a; y=b;} // 带有缺省参数的构造函数的定义 int getx() { return x; } int gety() { return y; } private: int x, y; }; void main() { Coord op1( 5, 6 ); Coord op2( 5 ); Coord op3; // 调用缺省参数的构造函数 int i, j; i=op1.getx(); j=op1.gety(); coutop1 i= i op1 j= jendl; i=op2.getx(); j=op2.gety(); coutop2 i= i op2 j= jendl; i=op3.getx(); j=op3.gety(); coutop3 i= i op3 j= jendl; } 3.4.4 析构函数 析构函数也是一种特殊的成员函数。它执行与构造函数相反的操作, 通常用于撤消对象时
您可能关注的文档
最近下载
- 国家开放大学学前教育科研方法大作业答案.docx
- 配电工程 投标方案(技术方案).docx
- 2023年11月金华十校2024届级高三一模历史试卷(含答案).docx
- 2024《教育科学研究项目课题设计论证》:大班幼儿入学准备主题课程构建的实践研究7400字.doc
- 机电应用技术专业典型案例——校企融合、实景教学办学模式的创新.docx VIP
- 丙型肝炎病毒实验室检测技术规范(2023年修订版).pdf
- 中国客票销售发展模式论文.pdf
- 广东省茂名市电白区2023-2024学年七年级上学期期中数学试卷.pdf VIP
- 国家开放大学《管理英语4》边学边练Unit 5-8(答案全).docx VIP
- 《烹饪美学》 第四章 菜点造型艺术.pptx
文档评论(0)