第三章 类 类 型 数据封装 C++语言与C语言最大的不同,在于C++语言增加了面向对象的概念。C++语言允许用户定义新的抽象数据类型。 类类型,将一组数据和对它们的相关操作封装在一起,实现的是面向对象中的核心概念: 数据封装; 对象就是类类型的实例。 3.1 类 与 对 象 3.1.1 类的定义 定义用户定义的类型Date ,考虑对该类型数据的操作,可能有: struct Date { int d,m,y;}; void init_date(Date ,int,int,int) Date add_day(Date d,int n); 函数和数据类型之间没有联系,因此,需要操作一个Date数据时,需要Date类型的参数。 C++语言允许在结构类型定义中,加入函数的定义,这些函数的目的,也是要操作某个结构的变量。 该结构更复杂定义为: struct Date { int d,m,y; void init_date(int,int,int); Date add_day(int n); }; 在Date中定义的函数称为成员函数,它们只能被对应的Date类型的变量(此时,称之为对象)以特殊的方式激活。该Date类型在C++语言中称为类类型,是一种抽象数据类型。 对象激活成员函数的方式为: 对象.成员函数(…) Date my_birthday; void f( ) { Date today; today.init_date(27,5,2002); my_birthday.init_date(12,7,1968); Date tomorrow=today; tomorrow.add_day(1); … } 成员函数可以在类类型定义时给出,也可以在类类型定义时只给出成员函数的声明,在类型定义外再给出函数的定义。 格式为: type 类名::函数名(形参表) { … } void Date::init_date( int dd,int mm,int yy) { d=dd; m=mm; y=yy; } 在一个成员函数内部(函数体内),不需要显示指明访问的数据是哪个对象的,虽然一个类类型的所有对象都具有该类类型中定义的所有数据,但成员函数能够“知道”它在操作的数据属于激活该函数的那个对象。 在C++语言中,抽象数据类型更一般的形式为: class Class_name {…}; 称为类类型的定义,它定义了一个新类型。Class_name是类名,也就是该类型的类型名。 结构类型中定义的数据成员并不是唯一地由结构中定义的成员函数进行操作;也可以使用 结构变量.结构数据成员 的方式访问结构类型中定义的数据成员。 将struct 改为class;可以限制类型中定义的数据的访问。 class Date { private: int d,m,y; public: void init_date(int,int,int); Date add_day(int n); }; 其中:public 将类类型中的成员分为两部分,第一部分为私有段,它们只能够被成员函数访问;第二部分为公有段,构成该类类型的对象的访问接口。 注意:结构(struct)是一种特殊的类类型;结构缺省段约束符(private、protected和public)说明的成员是公有段成员。 一个类类型中可以有两种成员:数据和操作。在C++中称它们为数据成员和成员函数。根据它们的被访问权限,成员又可以分为私有段成员、保护段成员和公有段成员。 class 类名 { private: //定义私有段成员 私有段数据和函数定义; public: //定义公有段成员 公有段数据和函数定义; }; 其中,类名是一个标识符,代表类类型的类型名;private、public称为段约束 符,其中private可以缺省(即没有被段约束符说明的成员就是私有段成员); 定义公有和私有成员的顺序可以是任意的。 { }以内的部分 称为类内; { }以外的部分称为类外。 3.1.2 数据封装 一个类的定义实现了数据封装:类外不可见:(即封装起来的部分) 私有段数据 私有段函数原型 私有段函数和公有段函数的实现 类外可见:类向外提供部分 公有段数据 公有段函数原型 class Date { int d,m,y; public: void init_date( int d1,in
您可能关注的文档
- 9040高级培训幻灯片.ppt
- 80486微处理器幻灯片.ppt
- 124711_广告插图幻灯片.ppt
- 20133688tt宽带装维人员技能培训-宽带故障处理流程幻灯片.ppt
- 20140327金色LOFT个案分析不完全版幻灯片.ppt
- 20140606高考考务培训幻灯片.ppt
- A05 ReadyNAS 竞争分析幻灯片.ppt
- Access_15过程调用与参数传递幻灯片.ppt
- Access关系数据库简介幻灯片.ppt
- ACCESS实例教程(查询)幻灯片.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
原创力文档

文档评论(0)