- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
05 第五章 类与对象(一)课件
第五章 类与对象;§5.1 面向对象的基本概念和特征;3.封装 : 用两种方法实现;(2) 类:用类实现封装;5.类的特征;§5.2 类的定义一、类声明 ;例:循环计数器类;例如:定义一个person类,设person具有的特征:属性(姓名、年龄、性别),方法(输出一个人的属性);则对应着有4个成员:三个数据成员,一个成员函数。这些数据成员一般不能由外界直接访问,随意修改。而只能通过成员函数进行访问。所以三个数据成员定义为私有成员,print成员函数定义为公有成员。则有:
class Tperson
{ private:
char name[10];
int age;
char sex;
public:
void print( );
};;当成员函数的规模较小时,语句只有1-5行,符合内联函数条件,则可在类中定义成员函数,成为内联成员函数。
如:
class TDate
{ public:
void Set(int m, int d, int y) // 置日期值
{
month=m; day=d; year=y;
}
void Print( ); // 打印输出
private:
int month;
int day;
int year;
};;说明; 类中的数据成员不允许使用初值表达式; 在类中 const 的使用;二、类成员的访问控制 ;三、类界面与类实现;如定义一个类:
class TPoint
{ public:
void SetPoint(int x, int y) // 置坐标值
{
X=x; Y=y; //给数据成员赋值
}
int Xcoord( ) {return X;} //提供X坐标值
int Ycoord( ) {return Y;} //提供Y坐标值
void Move(int xOffset,int yOffset ); // 移动点
private:
int X;
int Y;
};
void Tpoint::Move(int xOffset,int yOffset)
{X+=xOffset; Y+=yOffset; };四、 标识符的类作用域 ;§5.3 对象的创建;定义了一个类只是定义了一种类型,它并不分配空间,不能进行操作。只有用它创建对象后,系统才为对象分配存储空间。
对象是类的实例。(对象是一种广义变量?)
定义对象之前要先定义好类。
对象定义格式为:类类型名 对象名表;如:
student s,t; //定义两个student类的对象s和t
Tdate date1; //定义一个Tdate类的对象date1
Tdate *Pdate=date1;
//定义一个指向date1对象空间的指针Pdate
Tdate data[3];
//定义一个data对象数组,其元素类型为Tdate类;对象成员的表示方法;注意:
在成员函数中访问成员无须加对象名来作为前缀。
如:
void Tperson::print( )//自家人不客气
{
coutnameagesexendl;
}
在name等成员之前不能加对象名,在定义类时,成员函数是所有对象共享的代码,不被某一个对象独占。也无法确定类的对象名。;…
void Tperson::set(char n[ ], int a, char s)
{
strcpy(name,n); age=a;sex=s;
}
void main( )
{
Tperson s; Tperson t;
s.set(li,23,m); t.set(wang,21,f);
s.age=20; //error
s.print( ); t.print( );
};一个类中所有对象调用的成
文档评论(0)