C++《面向对象程序设计》实验指导书

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验一熟悉VC++IDE开发环境一、实验目的1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。2、掌握如何编辑、编译、连接和运行一个C++程序。3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。二、实验要求1、分析下列程序运行的结果。程序一:#includeiostream.hintadd(intx,inty=8);voidmain(){intx=4;coutadd(x),;coutadd(x,add(add(x,add(x))))endl;}intadd(intx,inty){returnx+y;}程序二:#includeiostream.hvoidmain(){int*p,i;i=5;p=&i;i=*p+10;couti=iendl;}程序三:#includeiostream.hvoidmain(void){inti=10;int&r=i;r++;couti=i,r=r'\n';i=88;couti=i,r=r'\n';}程序四:#includeiostream.hintf(inti){staticintk=1;for(;i0;i--)k+=i;returnk;}voidmain(){inti;for(i=0;i5;i++)coutf(i);}程序五:#includeiostream.hvoidfunc();intn=1;voidmain(){staticinta;intb=-9;couta:ab:bn:nendl;b+=4;func();couta:ab:bn:nendl;n+=10;func();}voidfunc(){staticinta=2;intb=5;a+=2;n+=12;b+=5;couta:ab:bn:nendl;}实验二C++对C的扩充一、实验目的1、了解在面向对象程序设计过程中C++对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。2、进一步熟悉编辑、编译、连接和运行C++程序的方法。3、进一步熟悉C++程序的结构和编程方法。二、实验要求1、分析下列程序运行的结果。#includeiostream.hintamount=123;voidmain(){intamount=456;cout::amount',';coutamount',';::amount=789;cout::amount',';coutamount'\n';}2、编写一个程序,用来求2个或3个正整数中的最大数。①用不带默认参数的函数实现。②用带默认参数的函数实现。3、有5个字符串,要求对它们按由小到大顺序排列,用string方法。4、定义一个求两个数中较小值的函数模板min(),要求在main()函数中进行调用求两个浮点型数据和两个整型数据中较小的数。实验三类和对象(一)一、实验目的1、掌握声明类的方法,类和类的成员的概念以及定义对象的方法。2、掌握类的构造函数与析构函数的概念和使用方法。3、初步掌握用类和对象编制基于对象的程序。二、实验要求1、分析下面的程序,写出其运行时的输出结果。#includeiostreamusingnamespacestd;classDate{public:Date(int,int,int);Date(int,int);Date(int);Date();voiddisplay();private:intmonth;intday;intyear;};Date∷Date(intm,intd,inty):month(m),day(d),year(y){}Date∷Date(intm,intd):month(m),day(d){year=2005;}Date∷Date(intm):month(m){day=1;year=2005;}Date∷Date(){month=1;day=1;year=2005;}voidDate∷display(){coutmonth″/″day″/″yearendl;}intmain(){Dated1(10,13,2005);Dated2(12,30);Dated3(10);Dated4;d1.display();d2.display();d3.display();d4.display();return0;}2、建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员变量:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数,声明一个学生对象,然后调用成员函数在屏幕输出学生信息。3、类Person的定义如下,请实现该类,并在主函数中创建对象obj,然后使用构造函数为obj赋予初始值(内容自定)。classPerson{private:charname[10];intage;intsalary;chartel[8];public:Person(char*xname,intxage,intxsalary,char*xtel);voiddisp();};实验四类和对象(二)一、实验目的1、进一步加深对类和对象的理解。2、掌握对类的对象数组、对象的指针及其使用方法。3、掌握友元的概念和使用。4、了解类模板的使用方法。二、实验要求1、分析并比较下列程序运行的结果。程序一:#includeiostream.h#includeiostream.hclasssmallone{public:smallone(intsma){coutsmconstr:sma\n;}};voidfn(intn){smallonesm(n);coutinfunctionfnwithn=nendl;}intmain(){fn(10);fn(20);return0;}程序二:#includeiostream.h#includeiostream.hclasssmallone{public:smallone(intsma){coutsmconstr:sma\n;}};voidfn(intn){staticsmallonesm(n);coutinfunctionfnwithn=nendl;}intmain(){fn(10);fn(20);return0;}2、建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。3、声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。(例3.14)实验五运算符重载一、实验目的1、进一步了解运算符重载的概念和使用方法。2、掌握几种常用的运算符重载的方法。二、实验要求1、定义一个复数类Complex,重载运算法“+”,使之能用于复数的加法运算。将运算符重载为普通函数(非成员、非友元)、成员函数、友元函数。根据要求修改通过函数来实现复数相加的示例,分别编写程序,求两个复数之和。#includeiostreamusingnamespacestd;classComplex//定义Complex类{public:Complex(floatx=0,floaty=0){real=x;imag=y;}//构造函数Complexcomplex_add(Complex&c2);//声明复数相加函数voiddisplay(){coutreal'+'imag'i'endl;};private:floatreal;//实部floatimag;//虚部};ComplexComplex::complex_add(Complex&c2){Complexc;c.real=real+c2.real;c.imag=imag+c2.imag;returnc;}intmain(){Complexcomplex1(3.34f,4.8f),complex2(12.8f,5.2f);Complexcomplex;//定义3个复数对象complex=complex1.complex_add(complex2);//进行两个复数的加运算complex.display();return0;}实验六继承和派生一、实验目的1、了解继承在面向对象程序设计中的重要作用。2、进一步理解继承与派生的概念。3、掌握通过继承派生出一个新的类的方法。4、了解虚基类的作用和用法。二、实验要求1、运行程序,分析构造函数与析构函数的调用顺序。程序一:#includeiostream.hclassA{public:A(){coutA:Constructorendl;}~A(){coutA:Destructorendl;}};classB:publicA{public:B(){coutB:Constructorendl;}~B(){coutB:Destructorendl;}};voidmain(){Bb;}程序二:#includeiostream.hclassA{inta;public:A(intaa=0){a=aa;}~A(){cout”DestructorA!”aendl;}};classB:publicA{intb;public:B(intaa=0,intbb=0):A(aa){b=bb;}~B(){cout”DestructorB!”bendl;}};voidmain(){Bx(5),y(6,7);}2、分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cader类。要求:①在两个基类种豆包含姓名、年龄、性别、地址、电话等数据成员。②在Teacher类中还包含数据成员title(职称),在Cader类中还包含数据成员post(职务)。在Teacher_Cader类中还包含数据成员wages(工资)。③在对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。④在类体中声明成员函数,在类外定义数据成员。⑤在派生类Teacher_Cader的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再调用cout语句输出职务和工资。实验七多态性和虚函数一、实验目的1、了解多态性的概念。2、了解虚函数的作用及其使用方法。3、了解静态关联和动态关联的概念和用法。4、了解纯虚函数和抽象类的概念和用法。二、实验要求1、分析程序运行结果,掌握虚函数的使用。程序一:#includeiostream.hclassONE{public:virtualvoidf(){coutlendl;}};classTWO:publicONE{public:TWO(){cout2endl;}};classTHREE:publicTWO{public:virtualvoidf(){TWO::f();cout3;}};voidmain(){ONEaa,*p;TWObb;THREEcc;p=&cc;p-f();}程序二:#includeiostream.hclassBase{public:virtualvoidfn(){coutInBaseClass\n;}};classSubClass:publicBase{public:virtualvoidfn(){coutInSubClass\n;}};voidmain(){Basebc,*p;SubClasssc;p=&bc;p-fn();p=≻p-fn();}2、实现一个类A,在A中

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功