C++教程第07章 类与对象-1定义及使用初步

上传人:油条 文档编号:28511883 上传时间:2018-01-17 格式:DOC 页数:11 大小:93KB
返回 下载 相关 举报
C++教程第07章 类与对象-1定义及使用初步_第1页
第1页 / 共11页
C++教程第07章 类与对象-1定义及使用初步_第2页
第2页 / 共11页
C++教程第07章 类与对象-1定义及使用初步_第3页
第3页 / 共11页
C++教程第07章 类与对象-1定义及使用初步_第4页
第4页 / 共11页
C++教程第07章 类与对象-1定义及使用初步_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《C++教程第07章 类与对象-1定义及使用初步》由会员分享,可在线阅读,更多相关《C++教程第07章 类与对象-1定义及使用初步(11页珍藏版)》请在金锄头文库上搜索。

1、1第 7 章 类与对象7-1. 教学目的与要求1理解类、类的成员、类的对象等概念;并掌握类、类的成员的定义方法及类对象的创建方法;2理解构造函数和析构函数的概念,掌握构造函数和析构函数定义方法,掌握构造函数的各种使用方法;3理解对象成员的概念,掌握对象成员的初始化方法;4掌握 coust 对象、 coust 成员函数和 coust 成员数据的使用;5掌握友元函数的定义和使用;6掌握静态成员数据及静态成员函数的义及使用。7-2.主要内容及重点:本章主要介绍类的定义和使用以及类中各种特殊类型的成员的定义及用法,包括类及其成员的定义、对象的创建和使用、*this 指针,成员函数、构造函数、析构函数、

2、对象成员、友员、静态成员等。类是面向对象系统中最重要要的概念,面向对象程序设计中的所有操作都可归结为对类的操作。类是实现 C+面向对象程序设计的基础,是软件开发方法发展的必然产物。本章的重点是:类的定义和使用,以及各种类型的成员数据的定义和使用,各种类型的成员函数的定义和使用,构造函数和析构函数,友元函数等。本章的难点是:构造函数的两类特殊用途、const 对象和 const 成员、静态成员等。7-3. 第 7 章 类与对象-课件 3-4. 第 7 章 类与对象-复习总结本章首先介绍了类和对象的基本概念和特性,使初学者对类有了一个总体的认识。类是面向对象程序设计的基础。在进行面向对象程序设计时

3、,必须习惯于将事物或问题的描述抽象为类。类是对某一类事物的描述。类中包含了数据成员和成员函数。它们表现了2该类所具有的属性(数据)和操作(函数) 。类的一个实例称为对象。对象是具有类类型的变量。对象中的公有成员函数是对象与外界进行信息交换的唯一接口。其次进一步学习了类中各种类型成员的定义及使用。1.类的成员函数与一般函数一样,函数的参数可以具有默认值,并可以进行函数的重载。但成员函数具有类的作用域,即只能通过类的对象访问其公有成员函数。2.在创建对象时,自动调用类的构造函数,因此构造函数提供了对成员函数进行初始化的一种手段。析构函数则是在对象被撤消时自动调用,它主要用于对象的一些善后处理工作。

4、构造函数和析构函数为类的两个特殊的成员函数:它们都于类同名、不能指定返回值类型,一般访问权限为公有类型。如果不显式定义它们,C+将提供默认的构造函数和析构函数。3.可以将一个类的对象作为另一个类的成员数据,成为对象成员。对象成员的初始化,必须借助于该类的构造函数通过初始化成员列表来完成。4.为了能够共享数据又保护数据不被改变,可以将对象成员声明为 const 对象或 const 成员。const 对象或 const 成员在使用上有许多特殊规定。5.当创建多个对象时,静态成员能够节省内存空间。它属于类,不属于某个对象,它为所有同类的对象所共享。6.友员提供了在不同类的成员函数之间、类的成员函数与

5、一般函数之间进行数据共享的机制。通过友员,一个普通函数或另一个类的成员函数可以访问其他类中的私有和保护成员。7-5. 第 7 章类与对象-练习 7-5-1.思考题:1).什么是类?类的一般形式是什么?2).比较 C+中的结构和类的异同。3).什么是对象,类和对象之间有什么样的关系?4).对象能够访问什么类型的成员?如何访问?5). *this 指针具有什么样的特殊性?在编程过程中如何使用*this 指针?6).在类中是如何实现封装性的?7). 构造函数与析构函数分别有什么用?为什么允许构造函数重载而不允许析构函数重载。8). 如何实现对象成员的初始化?试举例说明。9). const 对象具有什

6、么特征?在使用 const 对象时的注意点是什么?10). 如何声明一个友元函数?一个类的友元函数是如何访问该类的成员的?11). 静态成员数据具有什么特征?在什么情况下使用静态成员数据?12). 静态成员函数具有什么特征?在定义静态成员函数时要注意什么?7-5-2.练习题:课后练习题见练习单元。3第 7 章 类与对象课件71 类和对象711 类类:是对一组具有公共属性的事物的抽象,从语言角度讲,它是一种自定义的数据类型,其中既包含有描述其属性的数据,又有处理这些数据的操作(函数) ,7111 类的定义类的格式 与结构(struct)类似。一般格式如下:class private::私有成员数

7、据和成员函数 ; public:公有成员数据和成员函数 ;protected:保护成员数据和成员函数 ;其中:1) class 是定义类的关键字;2) 类名为一个合法的标识符,是类的命名。3)类体:一对大括号内的说明部分。类体后面有个分号,表示类体的结束。4)类的成员:类体中定义的数据和函数。称为:成员数据和成员函数。5)private:限定的成员为私有成员。私有成员只限定在该类的内部使用。即只允许该类中的成员函数访问私有的成员数据和私有的成员函数。punlic:限定的成员称为公有成员。可以被类中的成员函数和类外的函数使用(访问对数据或调用对函数) 。protected:限定的成员称为保护成员

8、,对保护成员的访问要求与私有成员类似,只是在有派生类时与私有成员不同。6)private、public、protected 在类中的顺序无关紧要的,同一个关键字在类体中可以被反复使用。7)private 为默认关键字,在类体中没有明确地指定成员的访问权限时,系统约定这些成员为私有成员。8)限定访问权限的关键字的限定范围为:从该关键字后的第一个成员开始,到下一个限定访问权限的关键字之间的所有的成员。9)在定义类时,类的成员顺序也是无关紧要的,可先定义成员数据,也可以先定义成员函数,也可以混在一起定义,此时在前面定义的成员函数可以访问在后面定义的成员,在4后面定义的成员函数也可以访问在前面定义的函

9、数。但为了使定义的类清晰易懂,通常将成员数据集中在一起定义。10)类可以嵌套定义,见下例。例如:71.1 定义一个表示日期的类class CDate private : /int year , month , day ;public:void SetDate (int y , int m , int d) year = y ;month = m;day = d ;void Print ( )cout#includeclass Cline float x1 , y1 ;7public:float x2 ,y2 ;public:void SetCoord ( float , float ,floa

10、t ,float) ;/设置坐标值函数float GetCoordX1( ) return x1; /获取第一个端点的横坐标float GetCoordY1() return y1 ; /获取第一个端点的纵坐标void Print ( void )float L ;L=sqrt(y2-y1) *(y2-y1)+(x2-x1)(x2-x1) ;cout= new 类名 ( 参数表 )这里的参数表与相应类中的某个构造函数的参数相对应。 (见 10 章)例:CLine *line3=new CLine ;delete line3 ;对象指针也只能访问封装在其内部的公有成员。见 230。访问方式与结构

11、类型的指针访问其成员的方式类似,使用运算符“-” 。格式:- () ;例如:对前面定义的对象指针 line1 line1 - x2= 300 ;line2 -y2 = 400 ;line3 -Print ( ) ;714 *this 指针*this 指针是一个指向当前被操作对象的特殊指针。*this 指针可以显示地使用,但很多情况都是隐式使用。当某个对象调用一个成员函数时,系统将自动为该函数指定一个隐含的参数,该参数是一个指向该对象的指针,这个指针就是*this 指针。*this 具有如下形式的默认形式:*const this ;.例 714 定义一个时间类。# include 9class

12、CTime int hours ,minutes ;public:void SetTime ( int new_hours ,int new_minutes ) hours = new_hours ;minutes = new_minutes ; void GetTime (int ¤t_hours ,int &corrent_minutes )current_hours=hours ;current_minutes=minutes ; void CopyTime ( CTime &Time2); ;void CTime : CopyTime (CTime &Time2)*this

13、=Time2; /B *this 指针代表当前对象void main (void ) int hrs ,mins ;CTime Time1 ,Time2 ;Time1SetTime (10 ,30 );Time2SetTime (12 ,15) ;Time1GetTime ( hrs ,mins) ;coutclass CBankAccountpublic:CBankAccount( ) /构造函数account=0;balance=0.0;void MakeDeposit(long count_num ,float amount) /存款 第一个参数帐号account=count_num;b

14、alance+=amount;coutaccounttAfter deposit,the balance is:tbalanceendl;float WithDraw(long count_num ,float amount) ; /取款private:long account ;/ 帐号float balance ; /余额;float CBankAccount :WithDraw(long count_num ,float amount) / 取款if(account!=count_num) /如果输入的帐号不对coutIllegal account_number!endl;return

15、0.0;if(balanceamount) /如果余额少于取款数额coutThe amount to witndraw is bebyond the balance:endl;return 0.0:balance - =amount;coutaccounttAfter witndraw,the balance is :tbalanceendl :return balance;void main()CBankAccount a ,b; /两个对象中的成员数据都为 0a.MakeDeposit(1001,1000) ;a.WithDraw(1001,500) ;a.MakeDeposit(1001,2000) ;a.WithDraw(1001,1000);b.MakeDeposit(1002,5000);11b.WithDraw(1002 ,2000);b.WithDraw(1002,8000);b.WithDraw(1003,2000);b.WithDraw(1002,2000);运行结果:1001 After deposit,the balance is: 10001001 After witndraw,the balance is : 5001001

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号