实验二 类和对象的定义与使用.doc

上传人:PIYPING 文档编号:10906609 上传时间:2021-06-12 格式:DOC 页数:10 大小:272.50KB
返回 下载 相关 举报
实验二 类和对象的定义与使用.doc_第1页
第1页 / 共10页
实验二 类和对象的定义与使用.doc_第2页
第2页 / 共10页
实验二 类和对象的定义与使用.doc_第3页
第3页 / 共10页
实验二 类和对象的定义与使用.doc_第4页
第4页 / 共10页
实验二 类和对象的定义与使用.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《实验二 类和对象的定义与使用.doc》由会员分享,可在线阅读,更多相关《实验二 类和对象的定义与使用.doc(10页珍藏版)》请在三一文库上搜索。

1、天津大学本科生实验报告专用纸天津大学本科生实验报告专用纸 学院 教育学院 年级2010专业 计算机 班级1 姓名李晓杰 学号3010212017 课程名称 类和对象的定义与使用 实验日期2010/04/01 成绩 同组实验者 protected:public:; :()函数体;(2)基本要求了解类的定义格式和说明格式,了解类在程序的作用。2对象的定义(1)问题描述对象是类的具体实例,是面向对象的核心概念,是组成程序的实体,在程序中使用的是利用类建立的对象,抽象的类是不能够使用的,因此必须将其具体化,这就是引进对象的原因。对象的定义格式 ;有关解释:a.可以同时定义多个对象,不同对象之间用逗号相

2、隔。b.可以定义对象指针,格式如下: *=&;普通对象对类成员的调用.()对象指针-();不难看出,还可以如下格式的调用:.(*.)();(2)基本要求Time t1(10,13,56); Date d1(12,25,2004); t1.display(d1); return 0;测试结果:例2#include class Student public: Student(int n,float s):num(n),score(s) void change(int n,float s) num=n;score=s; void display()coutnum scoreendl; private

3、: int num; float score; ;int main()Student stud(101,78.5); stud.display(); stud.change(101,80.5); stud.display(); return 0;测试结果:3对象的初始化和删除(1)问题描述对象建立的时候系统自动调用构造函数,对象在删除时候系统自动调用析构函数。构造函数与析构函数是类中特殊的成员函数,决定了类对象的创建、初始化、拷贝和删除。它们具有普通成员函数的许多特性,可以在类内说明和定义它们,也可以在类内进行说明而在类外定义它们。(1) 基本要求熟悉构造函数与析构函数,并且了解缺省构造函数和

4、缺省析构函数,至于拷贝初始化构造函数观察它的三种调用时机。(3) 实验程序例4#include class Pointpublic:Point(int i,int j) /构造函数x=i;y=j;coutconstructor calledendl;Point() /缺省构造函数x=y=0;coutdefault constructor calledendl;Point() /析构函数coutdestructor calledendl;Point(int i,int j) /构造函数x=i;y=j;coutconstructor calledendl;Point() /缺省构造函数x=y=0;

5、coutdefault constructor calledendl;Point() /析构函数coutdestructor calledendl;Point(Point &p)x=p.x;y=p.y;cout“copy constructor called”endl;void Setxy(int x,int y)i=x;j=y;void Print();private:int x,y,i,j;void Point:Print()cout(x,y)endl;void main()Point p1(1,2);Point p2(p1);p2.Print();测试结果:;A fun(A a)cout

6、Hiendl;int x=10;int y=20;A r(x,y);return r;void main()A aa1(1,2),aa2;A aa3(aa1);aa2=fun(aa3);aa2.print();测试结果:3成员函数的特性(1) 问题描述成员函数有类似普通函数相同的性质,可以设置参数缺省值、可以设置为内联函数和可以进行函数重载。(2) 基本要求根据实验程序了解掌握成员函数的有关特性。(3) 实验程序例7#include class A例8#include class A public:A(int i)x=i;y=i*i; coutcon1endl;A(int i,int j)x=

7、i;y=j;coutcon2endl;int add()return x+y;int add(int i)return i+x+y;int add(int i,int j)return i+j;private:int x,y;void main()A a1(5),a2(10,20);couta1.add()endl;couta2.add(12)endl;couta1.add(30,50)endl;测试结果:private:int a;char name80;void main()A a1(echo),a2(33);a1.set(32);a2.set(sam);a1.print();a2.pri

8、nt();测试结果:例10#include class Apublic:A(int i,int j) /内联函数a1=i;a2=j;void print(); /外联函数private:int a1,a2;都是一样的,因为返回的都是同一个b,即11。例12中show是静态成员函数,因此可以直接操作静态数据成员(y),但是不能直接操作非静态数据成员(x),因此必须通过实参传递的对象对调用x(r.x)。因此静态成员函数比非静态成员函数的访问权限小。(3)实验程序例11#include class Xint a;static int b;public:X()a=0;X(int i)a=i;b+;X(

9、X &p)a=p.a;b+=a;int getb()return b;int X:b=0;void main()X a1,a2(10),a3(a2);couta1.getb()endl;测试结果:测试结果: 教师签字: 年 月 日实验二 类和对象的定义与使用一、实验目的1掌握类的定义格式。2掌握C+对C语言的本质扩展,以对象和类编制程序。二、实验预备知识对象就是面向对象的核心概念,是组成程序的实体。其实说的通俗一些,对象就是一个物体或者是一个实体,我们的现实世界到处都充斥着对象,因为他们都是自包含的封闭的“小包”。对于一个对象而言,应该具有对象名以区别于其他对象,还需要有特征来描述对象的特点,

10、另外还需要有操作和行为。对象的特征可以利用属性这个关键字来描述,这又有两层涵义,一是属性项,不同对象拥有的属性项是不一样的,即从哪些方面去描述对象,二是属性值,就是属性项的具体取值,在C+中利用数据成员实现。对象能够完成的行为又可以分为自身承受的操作和施加于其他对象的操作,在C+中利用成员函数实现。对象的特点(1)易维护性。(2)独立性。(3)连接性。所谓类就是一组客观对象的抽象,是抽象的概念,而对象就是类的具体实例,因此是具体的概念。在C+程序编制过程中,是先建立类,在建立类的基础上再建立对象,是先抽象再具体。对于同类的对象应该具有以下特点(1)具有不同的对象名。(2)具有相同的属性项和不同

11、的属性值。(3)具有相同的操作和行为。三、实验内容1类的定义(2) 问题描述类的定义格式与结构体定义的格式相似,其基本形式如下:class 类名 private:了解对象在程序的作用,只有类没有对象,对于程序而言是没有意义的。(3)实验程序例1#include class Date;class Time public: Time(int,int,int); void display(const Date&); private: int hour; int minute; int sec; ; class Date public: Date(int,int,int); friend void T

12、ime:display(const Date &); private: int month; int day; int year; ; Time:Time(int h,int m,int s) hour=h; minute=m; sec=s; void Time:display(const Date &da) coutda.month/da.day/da.yearendl; couthour:minute:secendl; Date:Date(int m,int d,int y) month=m; day=d; year=y; int main()测试结果:例3#include templat

13、eclass Compare public: Compare(numtype a,numtype b) x=a;y=b; numtype max() return (xy)?x:y; numtype min() return (xy)?x:y; private: numtype x,y; ;int main()Compare cmp1(3,7); coutcmp1.max() is the Maximum of two inteder numbers.endl; coutcmp1.min() is the Minimum of two inteder numbers.endlendl; Com

14、pare cmp2(45.78,93.6); coutcmp2.max() is the Maximum of two float numbers.endl; coutcmp2.min() is the Minimum of two float numbers.endlendl; Compare cmp3(a,A); coutcmp3.max() is the Maximum of two characters.endl; coutcmp3.min() is the Minimum of two characters.endl; return 0;测试结果:void Setxy(int x,i

15、nt y)i=x;j=y;void Print();private:int x,y,i,j;void Point:Print()cout(x,y)endl;void main()Point p1(1,2),p2;p2.Setxy(3,4);p1.Print();p2.Print();测试结果:例5#include class Pointpublic:例6#include class Apublic:A(int i=0,int j=0)a1=i;a2=j;coutcon.endl;A(const A &p)a1=p.a1;a2=p.a2;coutcopy.endl;A()coutdes.endl

16、;void print()couta1:a2endl;private:int a1,a2;public:A(int i=0,int j=0)x=i;y=j;void print()coutx=x,y=yendl;private:int x,y;void main()A a1,a2(1),a3(2,3);a1.print();a2.print();a3.print(); 例9#include #include class Apublic:A(char *s)strcpy(name,s);coutcon.stringendl;A(int i)a=i;coutcon.intendl;void set

17、(int i)a=i;void set(char *s)strcpy(name,s);void print()coutname,aendl;inline void A:print() /利用inline将外联函数转换成内联函数couta1,a2endl;void main()A x(1,2),y(2,3);x.print();y.print();测试结果:5 静态成员(1)问题描述静态成员包括静态数据成员和静态成员函数,静态数据成员在类内定义,在类外初始化,且必须初始化,且只初始化一次。静态数据成员属于类,而不是对象,任何对象对静态数据成员的改变,对其他对象都是有效的。静态成员函数可以直接调用

18、类中静态数据成员不可以直接调用类中非静态数据成员,可以通过函数形参调用类中的静态数据成员(2)基本要求例11中在类中设置了一个静态数据成员b,并且在类外初始化,初始化可以放在类外的任何位置。因b是静态数据成员,因此,它属于类,是所有对象共有的,任何对象对它的改变对其他对象都是有效的。在创建a1时,因为没有给出参数,因此调用缺省构造函数,将a1中a赋0,并没有改变b的数值。在创建a2对象时,调用具有一个参数的构造函数,将a2中的a赋10,并将b的数值改成1(b+;),这时,对于已经存在的对象a1和a2而言,静态数据成员的数值均为1。在创建a3时,调用拷贝初始化构造函数,将a2的非静态数据成员(a)的数值传递给a3中的(a),并对b进行累加的工作(b+=a;),因此b的数值此时已经被改成11。当三个对象都建立后,静态数据成员的数值就已经被设置为11。利用a1调用getb(),和利用a2或者a3例12#include class Aint x;static int y;public:A(int i=0)x=i;y+=x;static void show(A r)couty=y,x=r.xendl;void main()A a1(3);A:show(a1);A a2(4),a3(10);A:show(a3);int A:y=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1