实验 类和对象
首先我们了解一下,实验目的。
1. 实验目的
(1)进一步加深类和对象的理解。
(2)掌握类的构造函数和析构函数的概念和使用方法。
(3)掌握对象数组、对象的指针及其使用方法。
2.实验内容
(1)分析下面的程序,写出其运行时的输出结果。
#include <iostream.h> class Date {public: Date(int,int,int); Date(int,int); Date(int); Date(); void display(); private: int month; int day; int year; }; Date::Date(int m,int d,int y):month(m),day(d),year(y) {} Date::Date(int m,int d):month(m),day(d) {year=2005;} Date::Date(int m):month(m) {day=1;year=2005;} Date::Date() {month=1; day=1; year=2005; } void Date::display() {cout<<month<<"/"<<day<<"/"<<year<<endl;} int main() {Date d1(10,13,2005); Date d2(12,30); Date d3(10); Date d4; d1.display(); d2.display(); d3.display(); d4.display(); return 0; }
将程序中的第4行改为用默认参数,即
Date(int=1,int=1,int=2005);
分析程序有无问题。上机编译,分析出错信息,修改程序使之能通过编译。要求保留上面一行给出的构造函数,同时输出与修改前程序相同的输出结果。
(2)建立一个对象数组,内放5个学生的数据(学号、成绩),编写如下程序
①用指针指向数组首元素,输出第1,3,5个学生的数据。
②设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。
(3)阅读下面程序,分析其执行过程,写出输出结果。
#include <iostream> using namespace std; class student {public: student(int n,float s):num(n),score(s){} void change(int n,float s){num=n;score=s;} void display(){cout<<num<<" "<<score<<endl;} private: int num; float score; }; int main() {student stud(101,78.5); stud.display(); stud.change(102,80.5); stud.display(); return 0; }
修改上面的程序,增加一个fun函数,改写main函数。在main函数中调用fun函数,在fun函数中调用change和display函数。在fun函数中使用对象的引用(Student &)作为形参。