C 面向对象程序设计(第二版)教学课件 陈维兴 林小茶 编著 C 铁道第2版 3

上传人:飞*** 文档编号:51268328 上传时间:2018-08-13 格式:PPT 页数:104 大小:1.13MB
返回 下载 相关 举报
C  面向对象程序设计(第二版)教学课件 陈维兴 林小茶 编著 C  铁道第2版 3_第1页
第1页 / 共104页
C  面向对象程序设计(第二版)教学课件 陈维兴 林小茶 编著 C  铁道第2版 3_第2页
第2页 / 共104页
C  面向对象程序设计(第二版)教学课件 陈维兴 林小茶 编著 C  铁道第2版 3_第3页
第3页 / 共104页
C  面向对象程序设计(第二版)教学课件 陈维兴 林小茶 编著 C  铁道第2版 3_第4页
第4页 / 共104页
C  面向对象程序设计(第二版)教学课件 陈维兴 林小茶 编著 C  铁道第2版 3_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《C 面向对象程序设计(第二版)教学课件 陈维兴 林小茶 编著 C 铁道第2版 3》由会员分享,可在线阅读,更多相关《C 面向对象程序设计(第二版)教学课件 陈维兴 林小茶 编著 C 铁道第2版 3(104页珍藏版)》请在金锄头文库上搜索。

1、在线教务辅导网:http:/教材其余课件及动画素材请查阅在线教务辅导网QQ:349134187 或者直接输入下面地址:http:/第3章 类和对象(一) 3.1 类的构成3.2 成员函数的定义3.3 对象的定义和使用3.4 构造函数与析构函数本章主要内容3.1 类的构成3.1.1 从结构体到类3.1.2 类的构成本节主要内容3.1.1 从结构体到类1.结构体的扩充 例如下面声明了一个日期结构体:struct Dateint year; /年int month; /月int day; /日;C语言结构体一般格式如下 :struct 结构名数据;例3.1 有关日期结构体的例子。 #include

2、using namespace std; struct Date /声明了一个名为Date的结构体int year;int month;int day; ; int main() Date date1;date1.year=2010 ;/可以在结构体外直接访问数据yeardate1.month=8; /可以在结构体外直接访问数据monthdate1.day=25; /可以在结构体外直接访问数据daycout /例3.2-1 using namespace std;class pointprivate:int x,y;public:void setpoint(int a,int b) x=a;

3、y=b;int getx() return x; int gety() return y; ; void main() point op1; /定义了类point的对象op1int i,j;op1.setpoint(1,2);/调用op1的成员函数setpoint,/初始化对象op1i=op1.getx(); /调用op1的成员函数getx,取op1的x值j=op1.gety(); /调用op1的成员函数gety,取op1的y值cout /分析运行结果 using namespace std; class point private:int x,y; /私有数据成员public:void in

4、it(int a,int b) x=a; y=b; int getx() return x; int gety() return y; ;void main( ) point op; /定义了类point的对象opint i,j;op.init(1,2);i=op.x; j=op.y; cout /分析运行结果 using namespace std; class point private:int x,y; /私有数据成员public:void init(int a,int b) x=a; y=b; int getx() return x; int gety() return y; ; vo

5、id main( ) point op;int i,j;op.init(1,2);i=op.getx();j=op.gety();cout /学生类的完整程序 using namespace std; class Studentprivate:int number;float score;public:void input(int number1,float score1); /输入学生 成绩void modify(float score1); /修改学生 成绩void print(); /打印学生 成绩 ; void Student:input(int number1,float score

6、1) number=number1; score=score1; void Student:modify(float score1) score=score1; void Student:print( ) cout ”操作符。例如: class Date public:int year; ;Date d, *ptr; /定义对象d和指向类Date的指针变量 ptrptr= /使ptr指向对象dcoutyear; /输出ptr指向对象中的成员yeard.year(*ptr).year 三者是等价的ptr-year(3)通过对象的引用访问对象中的成员如果为一个对象定义了一个引用,也就是为这个 对象

7、起了一个别名。 例如: class Date public:int year;. ; Date d1; /定义类Date的对象d1 Date /定义类Date的引用d2,/并用对象d1进行初始化 cout /例3.5 using namespace std; class ABC public: void init(int i,int j) a=i; b=j; void show() cout/例3.7-1 using namespace std; class Datepublic:Date(int y,int m,int d); /声明构造函数Date的原 型void showDate();p

8、rivate:int year; int month; int day; ; Date:Date(int y,int m,int d) /定义构造函数Date year=y; month=m; day=d; inline void Date:showDate() cout”来访问对象的成员,而不是 “.” 。 类名 *指针变量名=new 类名(实参表);将例3.7-1的主函数改成用这种方法来实现。 int main() Date *pdate = new Date(2010,4,28); pdate-showDate();delete pdate;return 0; 利用构造函数创建对象的另

9、一种方法:用指针和new来实现。说明:(1) 构造函数的名字必须与类名相同,否则编 译程序将把它当作一般的成员函数来处理。(2) 构造函数没有返回值,在声明和定义构造 函数时,是不能说明它的类型的,甚至说明为 void类型也不行。 例如上述构造函数不能写成void Date(int y,int m,int d); 说明为void类型也不行(3) 与普通的成员函数一样,构造函数的函数体 可写在类体内,也可写在类体外。如例3.7-1中的类Date可以声明如下: class Date public:Date(int y,int m,int d) / 构造函数定义在类内 year=y; month=m

10、; day=d;void showDate() cout /例3.8 using namespace std; class Apublic:A(int x1):x(x1),rx(x),pi(3.14) void print() cout using namespace std;class D int mem1;int mem2;public:D(int i):mem1(i),mem2(mem1+1) cout using namespace std;class D int mem1;int mem2;public:D(int i):mem2(i),mem1(mem2+1) cout using

11、 namespace std; class D int mem1;int mem2;public:D(int i):mem2(i),mem1(mem2+1) cout using namespace std; class D int mem2;int mem1; public:D(int i):mem2(i),mem1(mem2+1) cout /例3.10-1 class Box private:int height,width,length; public: Box(int h=10,int w=10,int len=10); int volume(); ; Box:Box(int h,i

12、nt w,int len) height=h; width=w; length=len; int main( ) Box box1; cout/例3.11含有构造函数和析构函数的 Date类。 using namespace std; class Datepublic:Date(int y,int m,int d); / 声明构造函数Date(); / 声明析构函数void setDate(int y,int m,int d);void showDate();private:int year; int month; int day; ;Date:Date(int y,int m,int d)

13、/ 定义构造函数 cout #include class complex private:double real;double imag; public:complex(double r=0.0,double i=0.0); / 声明构造 函数complex(); / 声明析构 函数double abscomplex(); ;授课时,请教师 根据教学需要,可 在在例3.11和例 3.11-1两题中选一 。complex:complex(double r,double i) /定义构造函 数 cout using namespace std; class Myclasspublic:int no

14、; ; int main() Myclass a;cout using namespace std; class Myclasspublic:char name10;int no; ; int main() Myclass a=“chen“,25;cout class Location private: int X,Y; public:void Init(int initX, int initY) X=initX; Y=initY; int GetX( ) return X; int GetY( ) return Y; ; int main( ) Location A3;A3.Init(785,980);cout /例3.15 分析下列程序的运行结果。 using namespace std; class Datepublic:Date(int y,int m,int d); /带有参数的构造函数void setDate(int y,int m,int d); void showDate(); private:int year; int month; int da

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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