类及其对象封装.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++程序设计 第三章 类及其对象的封装 内容提要 类的构成及定义 对象 对象的初始化 静态成员 this指针 类对象作为成员 对象数组 3.1 类的构成及定义 类是一种新的数据类型,它比结构更复杂。它是将不同类型的数据和与这些相关的操作封装在一起的集合体。 使用函数和类编程的本质不同: 类是OOP的精华,利用它可以实现数据的封装、隐蔽、继承和派生。 函数是将逻辑上相关的语句与数据封装,用于完成特定的功能。 类则是逻辑上相关的函数与数据的封装,它是对所要处理的问题的描述。 利用类可以编写出大型复杂的程序,其模块化程度比C语言中采用函数的方式更高。 1、类的定义语法 类的定义格式一般分为说明部分和实现部分。说明部分用来说明该类中的成员,包括数据成员和成员函数的说明。成员函数是用来对数据成员进行操作的,又称为方法。实现部分是用来对成员函数的定义。概括来说,说明部分将告诉使用者“干什么”,而实现部分是告诉使用者“怎么干”。可见,使用者关心的往往是说明部分,而实现部分是一些不必关心的信息。 类的定义格式 类是一种用户自定义的数据类型,它的一般定义格式如下: class 类名 { public: 公有数据成员和成员函数; protected: 保护数据成员和成员函数; private: 私有数据成员和成员函数; }; 各个成员函数的实现;//该部分也可以放在类的内部 其中,class是定义类的关键字。类名是一个标识符,用于惟一标识一个类。一对大括号内是类的说明部分,说明该类的所有成员。 公有成员、私有成员和保护成员 类的成员包括数据成员和成员函数两部分。类的成员从访问权限上分有以下三类:公有的(public)、私有的(private)和保护的(protected),其中默认为private权限。 公有成员:提供了类的外部接口,可以被程序中的任何代码访问; 私有成员:只能被类本身的成员函数及友元类的成员函数访问,其他类的成员函数,包括其派生类的成员函数都不能访问它们; 保护成员:与私有成员类似,只是除了类本身的成员函数和说明为友元类的成员函数可以访问保护成员外,该类的派生类的成员也可以访问。 例3.1 一个关于日期的类的说明部分 class Tdate { public: void SetDate(int y,int m,int d); int IsLeapYear( ); void print( ); private: int year,month,day; }; 这个类中定义了三个成员函数:SetDate用来设置日期,IsLeapYear函数用来判断润年,返回1表示是润年,print函数用来输出显示。 日期类的实现部分 void Tdate::SetDate(int y,int m,int d) { year=y; month=m; day=d; } int Tdate::IsLeapYear( ) { return (year%4==0 year%100!=0)||(year%400==0); } void Tdate::print( ) { coutyear“.”month“.”dayendl; } 说明: 日期类的实现部分中,对类内说明的三个成员函数进行了定义,即具体给除了函数功能的实现。在类外对类成员函数的定义必须使用运算符“::”,称为作用域运算符(也称作用域分辨符)。它是用来表示某个成员函数属于那个类的,如果未给出类名,该函数则是一个普通函数。 例3.2 上例的定义部分也可放在类内 class Tdate { public: void SetDate(int y,int m,int d) { year=y;month=m;day=d;} int IsLeapYear( ) { return (year%4==0 year%100!==0)||(year%400==0);} void print( ) { coutyear”.”month”.”dayendl;} private: int year,month,day; }; 2、定义类时应注意的事项 (1)在类内不允许对所定义的数据成员进行初始化 因为类是一个数据类型,其定义后并没有存储空间,因此,数据成员就不能进行初始化(但静态数据成员可以在类外进行初始化)。 例如,前面讲过的Tdate类中,下面的定义是错误的。 Class Tdate { public: ┇ private: int year=1998,month=4,day=9; //这里,不允许对数据成员进行初始化

文档评论(0)

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

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

1亿VIP精品文档

相关文档