第5章 类和对象1Word格式.docx
- 文档编号:14858121
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:27
- 大小:21.32KB
第5章 类和对象1Word格式.docx
《第5章 类和对象1Word格式.docx》由会员分享,可在线阅读,更多相关《第5章 类和对象1Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
protected:
数据成员或成员函数的说明
private:
};
各个成员函数的实现
或者:
public
访问权限protected
Private
公有部分往往是一些操作(成员函数),它是用户的接口。
这部分成员用户在程序中可以使用。
私有部分通常是一些数据成员,是用来描述该类中的对象的属性的,用户无法访问它们,只有成员函数或友元函数才能访问它们。
它们是被用来隐藏的部分。
例如,定义一个日期类。
classTDate
{public:
voidSetDate(inty,intm,intd;
intIsLeapYear(;
voidPrint(;
intyear,month,day;
voidTDate:
:
SetDate(inty,intm,intd
{year=y;
month=m;
day=d;
}
intTDate:
IsLeapYear(
{return(year%4==0&
&
year%100!
=0||
(year%400==0;
Print(
{cout<
”,”<
<
;
:
作用域运算符
类名:
函数名(参数表)
定义一个日期类还可以:
voidSetDate(inty,intmintd
intIsLeapYear(
{return(year%4==0&
voidPrint(
”,”
}
这里实现部分被省略了。
成员函数的作用:
1.操作数据成员,包括访问和修改数据成员;
2.协同不同的对象操作,称为传递消息。
5.1.3定义类时注意事项
1.在类体内不允许对数据成员初始化。
voidSetDate(inty,intmintd;
intyear(2004,month(9,day(29;
2.类中数据成员的类型是任意的。
整形、实型、字符型、数组、指针、引用和类类型等。
另一个类的对象,可以作该类的成员,但自身类的对象不行。
例1:
classstudent
……
longcode;
charname[10];
TDatebirthday;
//类类型成员
char*address;
charphone[20];
例2:
classN;
//类说明
classM
classNn;
//n是N的对象
classN
voidf(Mn;
//m是M类的对象
3.经常习惯地将类定义的说明部分或整个类的定义放到一个头文件中。
例如,定义一个点类,放在tpoint.h文件中。
classTpoint
voidSetPoint(intx,inty;
intXcoord({returnX;
intYcoord({returnY;
voidMove(intxoffset,intyoffset;
intX,Y;
voidTpoint:
SetPoint(intx,inty
{X=x;
Y=y;
Move(intxoffset,intyoffset
{X+=xoffset;
Y+=yoffset;
5.2对象的定义
对象是类的实例。
对象是属于某个已知的类。
5.2.1对象的定义格式
定义格式:
类名对象名
例如:
TDatedate1,date2,*p,date[10];
Tpointp1,p2,*p,&
d=p1;
5.2.2对象成员的表示方法
对象成员数据成员
成员函数
对象数据成员的表示:
对象名.成员名
date1.year,date1.month,date1.day
对象函数成员的表示:
对象名.成员名(参数表
date1.SetDate(2004,9,28
其中“.”是一个运算符。
指向对象的指针的成员:
对象指针名->
成员名
Pdate->
year
成员名(参数表
SetDate(2004,9,28
下面两种表示相同:
*对象指针名.成员名
*Pdate.year
例5.1分析输出结果。
tdate.h
voidSetDate(inty,intm,intd
#include
#include”tdate.h”
voidmain(
{TDatedate1,date2;
date1.SetDate(2004,10,8;
date2.SetDate(2005,10,8;
intleap1=date1.IsLeapYear(;
cout<
intleap2=date2.IsLeapYear(;
date1.Print(;
date2.Print(;
输出:
1
2004.10.8
2005.10.8
例5.2
#include”tpoint.h”
Tpointp1,p2;
p1.SetPoint(3,5;
p2.SetPoint(8,10;
p1.Move(2,1;
p2.Move(1,-2;
”x1=”<
”,y1=”
”x2=”<
”,y2=”
结果:
x1=5,y1=6
x2=9,y2=8
例5.3访问对象的公有成员。
classTclass
intx,y;
voidprint(
{Tclasstest;
test.x=100;
test.y=200;
test.print(;
100,200
例5.4用指针访问对象的公有成员。
intadd(Tclass*ptf
{return(ptf->
x+ptf->
y;
{Tclasstest,*pt=new(Tclass;
pt->
x=100;
y=200;
print(;
test.x=150;
test.y=450;
”x+y=”<
150,450
x+y=600
5.3对象的初始化
5.3.1构造函数和析构函数
构造函数的格式:
类名:
构造函数名(参数表
{}
构造函数的功能:
是在创建对象时,使用给定的值为对象初始化。
析构造函数的格式:
~析构函数名(
析构函数的功能:
是用来释放一个对象。
例5.5重新定义日期类
//tdate1.h
classTDate1
TDate1(inty,intm,intd;
~TDate1(;
voidIsLeapYear(;
TDate1:
TDate1(inty,intm,intd
”Constructorcalled.\n”;
~TDate1(
”Destructorcalled.\n”;
voidTDate1:
{if(year%4==0&
year%100!
=0||
year%400==0
”Isleapyear.\n”;
else
”Isnotleapyear.\n”;
#include”tdate1.h”
{TDate1today(2004,10,8,
tomorrow(2004.10,9;
”todayis“;
today.Print(;
today.IsLeapYear(;
”tomorrowis“;
tomorrow.Print(;
ConstructorCalled.
todayis2004.10.8
Isleapyear.
tomorrowis2004.10.9
DestructorCalled.
构造函数的特点:
1.构造函数是成员函数。
2.构造函数与类同名,不指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 类和对象1 对象