北邮C面向对象程序设计第三讲.ppt
《北邮C面向对象程序设计第三讲.ppt》由会员分享,可在线阅读,更多相关《北邮C面向对象程序设计第三讲.ppt(47页珍藏版)》请在三一办公上搜索。
1、C+面向对象程序设计,2.3.4 成员函数的存储方式,系统为每个对象分配内存空间。由于同一类对象的成员函数相同,若为每个对象的成员函数都分配内存空间,会造成内存浪费。只为对象的数据成员分配内存空间。类的所有对象共享一个成员函数空间,该空间不占用对象的存储空间。,2.4 对象成员的引用,“引用”就是如何访问对象中的成员。有三种方法:用对象名和成员运算符访问;用指向对象的指针访问;用对象的引用访问。,2.4.1 用对象名和成员运算符访问,格式:对象名.成员名#include using namespace std;class point private:int x,y;public:void se
2、tpoint(int a,int b)x=a;y=b;int getx()return x;int gety()return y;,int main()point op1,op2;int i,j;op1.setpoint(1,2);op2.setpoint(3,4);i=op1.getx();j=op1.gety();cout“op1 i=”i“opt1 j=”jendl;i=op2.getx();j=op2.gety();cout“op2 i=”i“opt2 j=”jendl;,2.4.2 用指向对象的指针访问,可以通过指针访问对象中的成员class Time public:int hour
3、;int minute;Time t,*p;p=,2.5 类和对象的应用举例,例 2.1 简单的例子#include using namespace std;class Time public:int hour;int minute;int sec;int main()Time t1;cint1.hour;cint1.minute;cint1.sec;coutt1.hour:t1.minute:t2.secendl;,例2.1 引用多个对象的成员(1)程序(a)#include using namespace std;class Time public:int hour;int minute;
4、int sec;int main()Time t1;cint1.hour t1.minutet1.sec;coutt2.hourt2.minutet2.sec;coutt2.hour:t2.minute:t2.secendl;return 0;,(2)程序(b)#include using namespace std;class Time public:int hour;int minute;int sec;int main()void set_time(Time,void set_time(Time,(2)程序(c)#include using namespace std;class Tim
5、e public:int hour;int minute;int sec;int main()void set_time(Time,void set_time(Time,例2.3 用成员函数处理例2.2中的程序#include using namespace std;class Time public:void set_time();void show_time();private:int hour;int minute;int sec;,int main()Time t1;t1.set_time();t1.show_time();Time t2;t2.set_time();t2.show_t
6、ime();return 0;void Time:set_time()cinhour;cinminute;cinsec;void Time:show_time()couthour:minute:secendl;,例2.4 在整型数组中找最大值#include using namespace std;class Array_max public:void set_value();void max_value();void show_value();private:int array10;int max;void Array_max:set_value()int i;for(i=0;iarrayi
7、;,void Array_max:max_value()int i;max=array0;for(i=1;imax)max=arrayi;void Array_max:show_value()coutmax=max;int main()Array_max arrmax;arrmax.set_value();arrmax.max_value();arrmax.show_value();return 0;,2.6 类的封装性和信息隐蔽,C+通过类实现封装性。在声明类时,一般将数据成员指定为私有,使它们与外界隔离,把让外界调用的成员函数指定为公有,外界通过公有函数实现对数据成员的访问。外界与对象的唯
8、一联系就是调用公有成员函数。公有成员函数是用户使用类的公用接口。通过成员函数对数据成员进行操作称为类的实现。,信息隐蔽的好处:(1)如想修改或扩充类的功能,只需修改类中有关的数据成员和成员函数,类外的部分不用修改。(2)如果在编译时发现类中的数据读写有错,不必检查整个程序,只需检查本类中访问这些数据的成员函数。,类声明和成员函数定义的分离,在面向对象程序开发中,一般将类的声明(包括成员函数的声明)放在指定的头文件中,在程序中只要把有关的头文件包含进来即可,不必在多个程序中重复写类的声明。为了实现信息隐蔽,一般类成员函数的定义不放在头文件中,而另外放在一个文件中。,/student.h 头文件,
9、在此声明类#include using namespace std;class Student int num;string name;char sex;public:void display();/student.cpp 文件定义函数#include#include student.h void Student:display()cout num endl;cout name endl;cout sex endl;,/main.cpp 定义主函数#include#include student.h using namespace std;int main()Student stud;stud
10、.display();return 0;,作业题目(10月11日提交):68页 第5题和第6题。5、将本章的例2.4改写为一个多文件的程序:(1)将类定义放到头文件arraymax.h中;(2)将成员函数定义放在源文件arraymax.cpp中;(3)主函数放在源文件file1.cpp中。6、求3个长方体的体积,编写一个基于对象的程序。数据成员包括length(长)、width(宽)、height(高)。要用成员函数实现以下功能:(1)由键盘分别输入3个长方体的长、宽、高;(2)计算长方体的体积;(3)输出3个长方体的体积。,第3章 类和对象的进一步讨论,3.1 构造函数,如果定义一个变量,在
11、使用这个变量前要对其赋初始值,否则其内的值不定。对象作为变量,也需要对其中的数据成员赋初始值。这通过构造函数来实现。构造函数是一种特殊的成员函数,不需要调用,而是在创建对象时自动执行。,构造函数属于某一个类,可由系统自动生成,也可以由程序员编写。构造函数名必须与类名同名。构造函数没有类型,不返回值。构造函数可以带参数,也可以不带参数。构造函数可以写在类内部,也可以写在类外部。构造函数即使被声明为公有函数,也不能被显示地调用。,例3.1在例2.3的基础上定义构造成员函数#include using namespace std;class Time public:Time()hour=0;minu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮 面向 对象 程序设计 第三

链接地址:https://www.31ppt.com/p-6246225.html