文档详情

[工学]c++语言程序设计第07章.ppt

发布:2018-03-04约1.54万字共138页下载文档
文本预览下载声明
第7章 类与数据抽象 7.1 类 的 定 义 7.2 对 象 的 定 义 7.3 构造函数和析构函数 7.4 成员函数的特征 7.5 静 态 成 员 7.6 友 元 7.7 对象的指针和对象的引用 7.8 对 象 数 组 7.9 常 类 型 类的基本特征有:封装性、继承性、多态性。 类中的成员,根据访问权限分为三类:私有、保护和公有。 7.1 类 的 定 义 类的一般定义格式如下: class 类名 { public: 数据成员或成员函数的说明 private: 数据成员或成员函数的说明 }; 各个成员函数的实现 其中,class是定义类的关键字,类名是符合C++规定的标识符。花括号内部是类的说明部分(包括前面的类头),用来说明该类的成员。类的成员包含数据成员和成员函数两部分。从访问权限上来分,类的成员又分为:公有的(public)、私有的(private)和保护的(protected)三类。公有的成员用public来说明,公有部分往往是一些操作(即成员函数),它是提供给用户的接口功能。 这部分成员可以在程序中引用。私有的成员用private来说明,私有部分通常是一些数据成员,这些成员用来描述该类中的对象的属性,用户是无法访问它们的,只有成员函数或经特殊说明的函数才可以引用它们,它们是被用来隐藏的部分。 各个成员函数的实现是类定义中成员函数具体功能的实现部分,这部分包含所有在类体内说明函数的具体功能。 【例7.1】下面给出一个关于时间的类的定义,该类是对时间的抽象,该类的对象将是一个具体的时间。 //类的说明部分: class Time{ private: int hour; int minute; int second; public: Time(); void SetTime(int,int,int); void printMilitary(); void printStandard(); }; //类的实现部分 Time::Time(){ hour= minute = second =0;} void Time::SetTime(int h, int m, int s) {   hour = (h=0h24)?h:0;   minute = (m=0m60)?m:0;   second = (s=0m60)?s:0; } void Time::PrintMilitary()   { cout(hour10? 0: )hour:(minute10? 0: ) minute endl; } void Time::PrintStandard()   { cout(hour==0|| hour==12? 12: hour%12) :(minute10? 0: ) minute :(second10? 0: ) second(hour12? AM: PM)endl; } 如果成员函数定义在类体外,则在函数头的前面必须加上作用域运算符“::”,以表明该函数所属类的标识。 在定义类时应注意以下几点: (1)在类体中不允许对所定义的数据成员进行初始化。 (2)类中的数据成员的类型可以是任意的,包括基本类型、数组、指针和引用等。也可以是对象。 ? (3)经常习惯地将类定义的说明部分或者整个定义部分(包含实现部分)放到一个头文件中。 7.2 对 象 的 定 义 7.2.1 对象的定义 ? 对象定义的一般格式为: 类名 对象名表 例如: Time t1,*t2,t3[3]; 7.2.2 对象成员的表示方法 ? 对象成员有数据成员和成员函数,其表示方式如下: 对象名.成员名 或者 对象名.成员名(参数表) 7.3 构造函数和析构函数 7.3.1 构造函数和析构函数 7.3.1.1 构造函数 构造函数是一个特殊的成员函数,构造函数的功能是在创建对象时,使用给定的值将对象初始化。该函数的名字与类名相同,该函数不指定类型说明,它有隐含的返回值,该值由系统内部使用。 该函数可以有一个参数,也可以有多个参数,即构造函数可以重载。函数体可以写在类体内,也可以写在类体外。程序中不能直接调用构造函数,在创建对象时系统自动调用构造函数。 【例7.3】构造函数应用举例。 class Date { public: Date(int y); Date(int y, int m) {year= y;month=m;day=0;} Date(int y, int m, int d); int IsLeapYear(); void Print(); private:   int year, month, day;
显示全部
相似文档