- 1、本文档共106页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c程序设计谭浩强第9章
第九章 关于类和对象的进一步讨论
9.1 构造函数
9.2 析构函数
9.3 调用构造函数和析构函数的顺序
9.4 对象数组
9.5 对象指针
9.6 共用数据的保护
9.7 对象的动态建立和释放
9.8 对象的赋值和复制
9.9 静态成员
9.10 友元
9.11 类模板
9.1 构造函数
所谓构造函数用于实现对对象的初始化操作;
一、对象的初始化(P263)
1.为什么要对对象进行初始化
class stu
{ int num;
string name;
};
stu stu1,stu2;
问题:
一个对象在声明时,系统为其分配存储空间中数据成员是否有确定的值;
2.类的数据成员是否可以在类声明的同时为其初始化
二、构造函数的作用
构造函数是一种特殊的成员函数,其作用是:为新创建的对象分配空间,或为对象的数据成员初始化。构造函数是由用户定义的,他必须与类名同名,以便系统能识别他并把他们作为构造函数(注意:当在类中用户没有定义构造函数时,系统将给出默认的构造函数)。
1.构造函数的声明
例9.1 P264在例8.3的基础上定义构造函数
#include iostream
using namespace std;
class Time
{ public:
Time(int h,int m,int s) //构造函数
{ hour=h;
minute=m;
sec=s;
}
void set_time();
void show_time();
private:
int hour;
int minute;
int sec;
};
void Time::set_time()
{ cinhour;
cinminute;
cinsec;
}
void Time::show_time()
{ couthour:minute:secendl; }
int main()
{ Time t1(10,10,10);
t1.show_time();
Time t2(20,20,20);
t2.show_time();
return 0;
}
说明:
在建立Time类的对象时,自动执行构造函数Time(),使该类中的所有对象中的各数据成员赋初值0。
2.构造函数的特点
构造函数是一个特殊的成员函数,该函数的名字与类名相同;
构造函数的功能是给对象初始化;
构造函数的函数体可写在类体内,也可写在类体外;
构造函数可以带参数,也可以不带参数;
程序中不能直接调用构造函数,在创建时由系统自动调用构造函数,构造函数一般声明为public;
构造函数不允许有返回值,也不允许定义构造函数的返回值类型,其中包括void类型;
如果用户没有自定义构造函数,则系统自动一个缺省的构造函数,而该缺省的构造函数,不执行初始化操作。
例9.1‘ 将构造函数在类内声明,在类外定义
#include iostream
using namespace std;
class Time
{ public:
Time(); //构造函数声明
void show_time();
private:
int hour;
int minute;
int sec;
};
Time::Time() //构造函数定义
{ hour=0;
minute=0;
sec=0;
}
void Time::show_time()
{ couthour:minute:secendl;
}
int main()
{ Time t1;
t1.show_time();
Time t2;
t2.show_time();
return 0;
}
三、带参数的构造函数(P266)
目的:实现对不同的对象的数据成员进行不同的初始化。
带参数构造函数首部的一般形式为:
构造函数名(类型1 形参1,类型2 形参2,。。。。。)
用带参构造函数直接创建对象一般形式为:
类名 对象名(实参1,实参2,。。。。。。)
例9.2 有两个长方柱体,其长、宽、高分别为:(1)12,25,30;(2)15,30,21。要求:分别求他们的体积。
问题分析:
长方柱体具有的共同属性:长(he)、宽(wi)、高(le);
长方柱体积计算: he*wi*le 用成员函数实现;
#include iostream
using namespace std;
class B
您可能关注的文档
- 8探究弹性势能的表达式及功与速度的关系.doc
- 8条款与过程方法对照表2.doc
- 8金属金属材料复习学案.doc
- 9-初中英语不同版本教材.doc
- 92金银回收专利技术资料.doc
- 92用表达式表示变量之间的关系.doc
- 933机械设备事故应急预案.doc
- 9年级管理体制规范文(9号).doc
- 9月健康教育原因分析鱼骨图.doc
- 9月21号需求分析.doc
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)