欢迎来到天天文库
浏览记录
ID:62033178
大小:24.00 KB
页数:4页
时间:2021-04-15
《C第17周第3次课总第43次课.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第17周第3次课总第43次课课题:类的成员引用教学目标:掌握类成员引用方法教学重点:类成员和成员函数教学难点:成员的引用教学方法:讲授法、情景教学法教学过程:【导入新课】【教学内容】1.对象成员的引用 访问对象的成员有三种方法:1)通过对象名和成员运算符访问对象中的成员对象名.成员名2)通过指向对象的指针访问对象中的成员比如已定义时钟类,访问3)通过对象的引用来访问对象中的成员2.类声明和成员函数定义的分离通常将类声明写在单独的头文件中,而将其成员函数的实现写在同名的.cpp文件中。这样,当用户要用到该类时,只需将类的头文件包含进
2、来即可,而无需重写该类的声明.3.类成员的访问控制方式三种访问控制方式分别是:public、protected、private。公有成员(公有访问的成员)是指在类内外都能访问的成员.私有成员是指只能在类内部访问的成员。而受保护成员也是只能在类内部访问的成员,就这一ﻫ点,与私有成员是完全一样的,而两者的差别在于继承过程中对产生的新类影响ﻫ不同。 上述说法虽然正确,但并未指明能访问或不能访问的主体是“什么”,即类内外的“什么”都能访问公有成员,而类内部的“什么"才能访问私有成员。这就牵涉到一个重要的理论问题。回顾一下,执行代码能存在于
3、函数外吗?实践是检验真理的唯一标准,将下 ﻫ列代码随便插入一个能正确执行的程序中,但一定要放在任何一个函数外.inti=6;i++; i=i+5;编译后可发现,第一句没问题,而后面两句都出现错误,这足以说明:函数外不能有任何执行代码。再回到原问题,要访问类的成员,所谓的“访问”,就是指使用,既然是“使用”,那就不会是“定义”或“声明”之类的语句,那肯定是可执行的咯,也即一定在某函数体中咯。于是,上述的“什么”就是指函数。ﻫﻩ于是,公有成员能被类内外所有函数访问;私有和受保护成员只能由本类成 ﻫ员函数访问,来自类外函数的访问都是非法
4、的。那么,什么是类内和类外呢?类体就是类内,而类体包括类声明体,还包括类成员函数的实现(成员函数体)。除此之外就是类外。 这个问题其实很简单,但有一点却始终困扰着一部分同学,那就是,用某个类定义出来的对象,还属于该类体吗?换言之,对象属于类内吗?明确的告诉大家:不是。 例如: //Clock。h#includeﻫclassClock{ public:voidSetTime(intNewH,intNewM,intNewS);voidShowTime(); private: intHour,Minute,Sec
5、ond;};//Clock。cpp #include"Clock.h"voidClock::SetTime(intNewH,intNewM,intNewS){Hour=NewH; Minute=NewM;Second=NewS;ﻫ} void Clock::ShowTime( )ﻫ{cout<6、ock.ShowTime();ﻫcout<〈myClock.Hour;//error:cannotaccessprivatememberdeclaredin class 'Clock'}通常将部分成员函数设置为公有成员,而将其余成员函数和所有的数据成员设置为私有或受保护成员. 4.类与对象的存储方式类占用内存吗?谭浩强教授在《C++程序设计》第238页明确地告诉了我们, 不占用。然而这个结论与谭教授后面所述内容(247 页)自相矛盾.谭教授对这 句话理解的本意应该是这样的:对象是具体的,当用类定义对象时,系统就会为对象分配相应的空7、间,各个对象拥有各自的存储空间;而类是抽象的,不存在为其分配空间的说法.ﻫ那么,定义对象时,系统为对象分配的空间究竟有多大呢?事实上,一个对象所分配的内存空间大小只取决于该对象中数据成员所占空间的大小之和。也即,各对象并不包含成员函数。那么,成员函数到哪去了?成员函数占用内存吗? 其实,整个程序的代码都存在于可执行程序的代码区中,当运行该程序时,代码区和数据区将一同送往内存。函数(当然包括成员函数)当然也属于代码咯。ﻩ类的成员函数的代码存储在对象空间之外.而且无论是在可执行文件中还是在内存中,类的成员函数代码只有一个副本,即代码区8、中那个,这些成员函数代码为所有同类对象所共享。[思考题] 分别运行如下三个程序,仔细分析它们的运行结果,得出你的结论。程序一: #includeﻫclass A{public:inta;charc; voidSet(){ci
6、ock.ShowTime();ﻫcout<〈myClock.Hour;//error:cannotaccessprivatememberdeclaredin class 'Clock'}通常将部分成员函数设置为公有成员,而将其余成员函数和所有的数据成员设置为私有或受保护成员. 4.类与对象的存储方式类占用内存吗?谭浩强教授在《C++程序设计》第238页明确地告诉了我们, 不占用。然而这个结论与谭教授后面所述内容(247 页)自相矛盾.谭教授对这 句话理解的本意应该是这样的:对象是具体的,当用类定义对象时,系统就会为对象分配相应的空
7、间,各个对象拥有各自的存储空间;而类是抽象的,不存在为其分配空间的说法.ﻫ那么,定义对象时,系统为对象分配的空间究竟有多大呢?事实上,一个对象所分配的内存空间大小只取决于该对象中数据成员所占空间的大小之和。也即,各对象并不包含成员函数。那么,成员函数到哪去了?成员函数占用内存吗? 其实,整个程序的代码都存在于可执行程序的代码区中,当运行该程序时,代码区和数据区将一同送往内存。函数(当然包括成员函数)当然也属于代码咯。ﻩ类的成员函数的代码存储在对象空间之外.而且无论是在可执行文件中还是在内存中,类的成员函数代码只有一个副本,即代码区
8、中那个,这些成员函数代码为所有同类对象所共享。[思考题] 分别运行如下三个程序,仔细分析它们的运行结果,得出你的结论。程序一: #includeﻫclass A{public:inta;charc; voidSet(){ci
此文档下载收益归作者所有