文档库 最新最全的文档下载
当前位置:文档库 › Visual C++ 6.0实验五类和对象、继承和派生

Visual C++ 6.0实验五类和对象、继承和派生

Visual C++ 6.0实验五类和对象、继承和派生
Visual C++ 6.0实验五类和对象、继承和派生

上海电力学院

实验报告

课程名称Visual C++ 实验项目类和对象、继承和派生

姓名储昊学号20132234 班级2013112 专业通信工程

同组人姓名指导教师姓名实验日期

实验内容

程序Ex_Class:定义一个人员类CPerson,包括的数据成员有姓名、编号、性别和用于输入/输出的成员函数。在此基础上派生出学生类Cstudent(增加成绩)和教师类Cteacher(增加教龄),并实现对学生和教师信息的输入/输出。编写一个完整的测试程序,并将Ex_Class 所有的类定义保存在Ex_Class.h中,将类的成员函数实现代码保存在Ex_Class.cpp中。

实验准备和说明

(1)在学习完第2章的“继承和派生”内容之后进行本次试验。

(2)编写本次上机所需要的程序。

实验步骤

1.创建工作文件夹

打开计算机,在“D:\Visual C++程序\LiMing\5”文件夹中创建一个新的子文件夹“5”。

2.输入程序Ex_Class.h

(1)启动Visual C++6.0。

(2)单击标准工具栏上的“New Test File”按钮,在新打开的文档窗口中输入下列程序代码:

#include

#include

class CPerson

{

public:

CPerson()

{

strcpy(pName,"");

strcpy(pID,"");

}

CPerson(char*name,char*id,bool isman=1)

{

Input(name,id,isman);

}

void Input(char*name,char*id,bool isman) {

setName(name);

setID(id);

setSex(isman);

}

void Output()

{

cout<<"姓名:"<

cout<<"编号:"<

char*str=bMan?"男":"女";

cout<<"性别:"<

}

public:

//姓名属性操作

char*getName()const

{return(char*)pName;}

void setName(char*name)

{

int n=strlen(name);

strncpy(pName,name,n);

pName[n]='\0';

}

//编号属性操作

char*getID()const

{

return(char*)pID;

}

void setID(char*id)

{

int n=strlen(id);

strncpy(pID,id,n);

pID[n]='\0';

}

//性别属性操作

bool getSex(){return bMan;}

void setSex(bool isman)

{

bMan=isman;

}

private:

char pName[20];

char pID[20];

bool bMan;

};

class CStudent:public CPerson

{

public:

CStudent(char*name,char*id,bool isman=1);

~CStudent(){}

void InputScore(double score1,double score2,double score3);

void Print();

CPerson student;

private:

double dbScore[3];

};

class CTeacher:public CPerson

{

public:

CTeacher(char*name,char*id,bool isman=1,int years=10);

~CTeacher(){}

void Print();

private:

int nTeachYears;

};

(3)单击标准工具栏上的“Save”按钮,弹出“保存为”文件对话框。将文件定位到“D:\Visual C++程序\LiMing\5”,文件名为Ex_Class.h,结果如图:

3.输入程序Ex_Class.cpp

(1)单击标准工具栏上的“New Test File”按钮,在新打开的文档窗口中输入下列程序代码:

#include

#include"Ex_class.h"

//类CStudent实现代码

CStudent::CStudent(char*name,char*id,bool isman)

:student(name,id,isman)

{

dbScore[0]=0;

dbScore[1]=0;

dbScore[2]=0;

}

void CStudent::InputScore(double score1,double score2,double score3)

{

dbScore[0]=score1;

dbScore[1]=score2;

dbScore[2]=score3;

}

void CStudent::Print()

{

student.Output();

for(int i=0;i<3;i++)

cout<<"成绩"<

}

//类CTeacher实现代码

CTeacher::CTeacher(char*name,char*id,bool isman,int years)

{

nTeachYears=years;

Input(name,id,isman);

}

void CTeacher::Print()

{

Output();

cout<<"教龄:"<

}

//主函数

int main()

{

CStudent stu("LiMing","21010211");

cout<

cout<

stu.Print();

stu.student.setName("LingLing");

stu.student.setSex(0);

stu.InputScore(80,90,95);

stu.Print();

CTeacher tea("Ding","911085");

tea.Print();

tea.setID("9110234");

tea.Print();

return 0;

}

(2)单击标准工具栏的“Save”按钮,弹出“保存为”文件对话框。将文件保存为Ex_Class.cpp。

(3)编译运行。结果如图:

(4)选择“工程”→“添加工程”→“文件”菜单命令,在弹出的“插入文件到工程”对话框中,选定前面的文件Ex_Class.h,单击确定按钮,此时的开发环境结果如图:

4.退出Visual C++6.0

C++实验报告 第四章 类与对象

C++实验报告 实验4 类与对象 一、实验目的 1、掌握类的声明和使用 2、掌握类的声明和对象的声明 3、复习具有不同访问属性的成员的访问方式 4、观察构造函数和析构函数的执行过程 5、学习类的组合使用方法 6、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序 二、实验任务 1、声明一个CPU类,包含等级rank、频率frequency、电压voltage等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU-Rank,声明为enum CPU-Rank{P1=1,P2,P3,P4,P5,P6,P7}, frequency为MHz的整数型,voltage为浮点型的电压值。观察构造函数好析构函数的调用顺序。 2、声明一个简单的Computer类,有数据成员芯片cpu、内存ram、光驱cdrom 等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM 类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 3、设计一个用于人事管理的People类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number编号、sex性别、birthday出生日期、id身份证号等。其中出生日期声明为一个日期类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内嵌成员函数、组合。 三、实验内容 任务1:首先声明枚举类型,在这里出现了知识性错误,不清楚具体应如何声明,经查询相关书籍,知道应在类外进行声明。初次用类来进行编程,在概念上是有一些混乱的,例如构造函数和析构函数的调用顺序等。在用debug单步调试后,明白其中道理。 源程序: //Lab4_1.cpp #include using namespace std; enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7}; class CPU { //CPU类的定义 private: //私有数据成员 CPU_Rank rank; int frequency;

继承和派生实验报告

实验目的与要求: 1.掌握类的继承与派生关系以及实验方法,理解类的层次结构。 2.掌握派生类构造函数初始化基类成员和对象成员的方法。 3.掌握内联函数和默认函数。 4.掌握赋值兼容原则,掌握派生类的复制构造函数和赋值运算符的定义。 实验过程及内容: 1.实践教程实验二十二P81范例:定义一个继承与派生关系的类体系,在 派生类中访问基类成员。 ①先定义一个点类,包含x,y坐标数据成员,显示函数和计算面积的函数成员; ②以点为基类派生一个圆类,增加表示半径的数据成员,重载显示和计算面积的函数; ③定义一个线段类,以两个点类对象作数据成员,定义显示、求面积及长度函数,线段类采用聚合方式,因为有两个端点,不能用派生。 编程测试所定义的类体系。 本实验教程中有源码,请自行运行,体会和熟悉继承与派生的基本概念及实现方法,掌握派生类构造函数初始化基类成员和对象成员的方法等。2. 实践教程P83编程:多层派生练习,由上题Point类和Circle类继续派生出Cylinder类。要求计算圆柱的底面积、侧面积、全面积和体积。 请编写所有完整的成员函数,并编写主函数进行验证。 数据处理 1. (1)

(2)j结果报错,原因是派生类中的成员函数不能访问基类中的私有成员。(3)在Line类中添加两个数据成员。

2. #include #include using namespace std; #define PI 3.14159 class Point{ friend class Line; protected: double x, y ; public: Point(){x = 0 ; y = 0 ; } Point(double xv,double yv){ x = xv; y = yv; } double Area(){return 0;} void Show() { cout<<"x="<

c++实验8 继承与派生上机练习题

1.定义一个哺乳动物类Mammal,并从中派生出一个狗类Dog,下面给出Mammal类的定义,要求: (1)添加Dog类的颜色数据成员,访问属性为私有,通过SetColor和GetColor成员函数来对颜色进行设置和获取。 (2)分别为基类和派生类添加相应的构造函数(有参、无参)和析构函数,并进行测试。 class Mammal { protected: int itsAge; int itsWeight; public: int GetAge(){return itsAge;} void SetAge(int age) {itsAge=age;} int GetWeight() { return itsWeight;} void SetWeight(int weight) {itsWeight= weight;} }; class Dog : public Mammal { //定义Dog类的数据成员和成员函数 }; 改: #include #include using namespace std; class Mammal { protected: int itsAge; int itsWeight; public: Mammal(); ~Mammal(); int GetAge(){return itsAge;} void SetAge(int age) {itsAge=age;} int GetWeight() { return itsWeight;} void SetWeight(int weight) {itsWeight= weight;} }; class Dog : public Mammal {

C++实验九类和对象的使用实验报告

实验九类和对象的使用实验报告 一实验目的 1、学会用构造函数对类对象进行初始化 2、掌握析构函数,并了解构造函数和析构函数的调用顺序 3、了解对象数组和对象指针的用法 4、学会共用数据的保护,了解常对象、常成员函数等的使用限制 二实验内容和要求 1.回顾课本知识,掌握重点和难点,认真分析例题熟悉本章内容。 2.完成本章课后习题2、6、7题,认真分析每一题的代码。 三实验环境 Visual C++6.0开发环境 四源程序 2、 #include using namespace std; class Date { public: Date(int,int,int); Date(int,int); Date(int); Date(); void display(); private: int month; int day; int year; }; Date::Date(intm,intd,int y):month(m),day(d),year(y) {} Date::Date(intm,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< using namespace std; class Student { public: Student(intn,float s):num(n),score(s) {}; void change(intn,float s) { num=n; score=s; } void display() { cout<

实验5:继承与派生

实验项目:继承与派生 实验目的: 1.学习定义和使用类的继承关系,定义派生类 2.熟悉不同继承方式下对基类成员的访问控制 实验任务: 1.定义一个基类Animal,有私有整形成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗 2.定义一个基类BaseClass,有整形成员变量Number,构造其派生类,观察其构造函数和析构函数的执行情况。 3.定义一个车类(vehicle)基类,有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(Seatnum)等属性。,在继承和过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题变成试试看。 实验步骤: 1.编写程序定义Animal,成员变量age定义为私有的。构造其派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现错误提示:程序名 2.编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名 3.用debug功能跟踪程序的执行过程,观察基类和派生类的构造函数和析构函数的的执行过程。 4.编写程序定义车类(vehicle),由此派生出自行车(bicycle)类、汽车(motorcar),把vehicle设置为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名。编译成功后把vehicle 设置成非虚基类,在编译一次,此时系统报错,无法编译成功。原因是若不把 vehicle ) 实验结果: C2248Animal’ 2. 源代码: { public: int age; public:

C上机实验报告实验四

实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。 5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示

C++语言程序设计实验答案_类与对象

实验04 类与对象(6学时) (第4章类与对象) 一、实验目的 二、实验任务 4_1 声明一个CPU类。 包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 4_2 声明一个简单的Computer类。 有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 4_3 声明一个表示时间的结构体。 可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

4_4(习题4-10)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、内联成员函数、组合。 三、实验步骤 1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。 首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:。(程序见步骤2) ★程序的运行结果: 2.(示例)调试程序文件。 使用调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: 操作)调试操作步骤如下: (1)单击“调试 | 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS 窗口出现,此时Visual Studio中光标停在main()函数的入口处。

C++实验二类与对象(附答案)

实验二类与对象 实验目的和要求 1.掌握类、类的数据成员、类的成员函数的定义方式。 2.理解类成员的访问控制方式。 3.掌握对象的定义和操作对象的方法。 4.理解构造函数和析构函数的定义与执行过程。 5.掌握重载构造函数的方法。 6.了解拷贝构造函数的定义方法。 实验容 1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。#include class Aa { public: Aa(int i=0) { a=i; cout<<"Constructor "<

(1) #include class Date { void set_date(); void show_date(); int year; int month; int day; }; Date d; int main() { set_date(); show_date(); } void set_date() { cin>>d.year; cin>>d.month; cin>>d.day; } void show_date() { cout< class A { public: void A(int i=0) { m=i; } void show() { cout<

实验2继承与派生讲解

实验2 继承与派生 2.1 实验目的 1.熟练掌握类的继承,能够定义和使用类的继承关系。 2.掌握派生类的声明与实现方法。 3.掌握类构造函数的初始化列表与作用域分辨符的使用方法。 4.理解虚基类在解决二义性问题中的作用。 2.2 实验工具与准备工作 在开始实验前,应回顾或复习相关内容。 需要一台主算机,其中安装有Visual C++ 6.0等集成开发环境软件。 2.3 实验内容 1.先阅读下列程序,写出执行结果。然后输入程序,调试程序,比较结果的正确性。 // 文件名: main.cpp #include // 预处理命令 using namespace std; // 使用标准命名空间std class A { public: // 公有函数: A(){ cout << "构造A" << endl; } // 构造函数 ~A(){ cout << "析构A" << endl; } // 析构函数 }; class B: public A { public: // 公有函数: B(){ cout << "构造B" << endl; } // 构造函数 ~B(){ cout << "析构B" << endl; } // 析构函数 }; class C: public B { public: // 公有函数: C(){ cout << "构造C" << endl; } // 构造函数 ~C(){ cout << "析构C" << endl; } // 析构函数 };

int main(void) // 主函数main(void) { C obj; // 定义对象 system("PAUSE"); // 调用库函数system( ),输出系统提示信息return 0; // 返回值0, 返回操作系统 } 2.先阅读下列程序,写出执行结果。然后输入程序,调试程序,比较结果的正确性。// 文件名: main.cpp #include // 预处理命令 using namespace std; // 使用标准命名空间std class A { protected: // 数据成员: int a; // 数据成员 public: // 公有函数: A(int x): a(x){ } // 构造函数 void Show() const{ cout << a << endl; } // 显示a之值 }; class B { protected: // 数据成员: int b; // 数据成员 public: // 公有函数: B(int x): b(x){ } // 构造函数 void Show() const{ cout << b << endl; } // 显示a与b之值 }; class C: public A, public B { public: // 公有函数: C(int x, int y): A(x), B(y){ } // 构造函数 void Show() const // 显示b之值 { cout << a << "," << b << endl; } }; int main(void) // 主函数main(void) { C obj(5, 18); // 定义对象 obj.Show(); // 显示相关信息 obj.A::Show(); // 显示相关信息 obj.B::Show(); // 显示相关信息 system("PAUSE"); // 调用库函数system( ),输出系统提示信息return 0; // 返回值0, 返回操作系统 }

实验一.类与对象实验报告

浙江理工大学信息学院 面向对象程序设计实验报告 实验名称:类的定义与使用学时安排:3 实验类别:设计性实验实验要求:1人1组姓名:邵旸珂学号:2016329621068  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的 1)掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性; 2)掌握类对象的定义; 3)理解类的成员的访问控制的含义,公有、私有和保护成员的区别; 4)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数; 二、实验原理介绍 通过建立类及对象,用类的成员函数和对象访问类的成员; 利用建立类的构造函数,完成类的成员的初始化工作; 三、实验设备介绍 软件需求: windows或linux下的c++编译器 硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU

处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 四、实验内容 编写一个程序,模拟电梯的功能。功能接口包括电梯上行按钮、下行按钮、楼层选择和电梯在行驶过程中的楼层显示。 要求: 1.由用户选择按上行按钮还是下行按钮,选择操作后再由用户输入要进入的楼层,进而电梯开始运行,显示所到的每一楼层层数。 2.如果是上行,则选择输入的楼层号不能比当前楼层号小,否则应给出不合法提示。 3. 如果是下行,则选择输入的楼层号不能比当前楼层号大,否则应给出不合法提示。 4.电梯一旦开始运作就会始终运行,直到窗口关闭。 5.电梯在经过不同楼层时,最好每个楼层的显示之间能有延迟,最终停靠的楼层的输出形式能更加醒目。如果可以,在电梯最初开始运行时,能在电梯由内部显示当前日期(提示:实现这些功能时,需要调用系统api,实现时间显示功能可以使用CDate类)。 五程序清单 #include #include #include using namespace std;

实验2 类和对象(一)

实验2 类和对象(一) 1、实验目的 (1)掌握声明类的方法,类和类的成员的的概念以及定义对象的方法。 (2)初步掌握用类和对象编制基于对象的程序。 (3)学习检查和调试基于对象的程序。 2、实验内容 (1)有以下程序: #include using namespace std; class Time //定义Time类 {public: //数据成员为公用的 int hour; int minute; int sec; }; int main( ) { Time t1; //定义t1为Time类对象 cin>>t1.hour; //输入设定的时间 cin>>t1.minute; cin>>t1.sec; cout<

实验四 继承与派生讲解学习

实验四继承与派生

实验四派生类与继承 【实验类型】验证性实验【实验课时】2学时 【实验目的】 (1)理解类的继承的概念,能够定义和使用类的继承关系。 (2)掌握派生类的声明与定义方法。 (3)熟悉公有派生和私有派生的访问特性。 (4)学习虚基类在解决二义性问题中的作用。 【实验环境】 硬件:计算机 软件:Microsoft Visual C++ 6.0 【实验内容】 1、按要求阅读、编写、调试和运行以下程序。 (1)实验内容 ①定义一个基类MyArray,基类中可以存放一组整数。 class MyArray {public: MyArray(int leng); ~MyArray(); void Input(); void Display(); protected: long int *alist; // 指向动态申请的一组空间 int length;}; // 整数的个数 基类中有构造函数、析构函数、输入数据和输出数据的函数。 ②定义一个类SortArray继承自MyArray ,在该类中定义函数实现排序功能。

③定义一个类ReArray继承自MyArray ,在该类中定义函数实现逆转功能。 ④定义一个类AverArray继承自MyArray ,在该类中定义函数Aver求解整数的平均值。 ⑤定义NewArray类,同时继承了SortArray, ReArray和AverArray,使得NewArray类的对象同时具有排序、逆转、和求平均值的功能。在继承的过程中声明为虚基类,体会虚基类在解决二义性问题中的作用。 (2)实验程序 (参考) 程序如下: #include "iostream.h" #include "process.h" class MyArray {public: MyArray(int leng); ~MyArray(); void Input(); void Display(); protected: long int *alist; // 指向动态申请的一组空间 int length; // 整数的个数 }; MyArray::MyArray(int leng) { length=leng; alist=new long int[length]; if(alist==NULL) { cout<<"对不起,创建失败。请重试。 ";exit(1); } } MyArray::~MyArray() {

作业实验类和对象基础

类和对象基础 一、选择题 1、下列哪一个不属于JAVA语言的数据类型 A)指针类型 B)类 C)数组 D)浮点类型 答案:A 2、声明类的关链字是 A)Class B)class C)void D)main

3、不属于java类中的变量的是 A)实例成员变量 B)类成员变量 C)局部变量 D)寄存器变量 答案: D 4、在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或 顺序各不相同,传回的值也可以不相同,这种面向对象程序特性称为 A)隐藏 B)覆盖 C)重载 D)Java不支持此特性

5、不使用static修饰符限定的方法称为实例成员方法,下列哪一个说法是不正确的A)成员方法可以直接调用父类的成员方法 B)成员方法可以直接调用父类的类方法 C)成员方法不可以直接调用其他类的成员方法 D)成员方法可以直接调用本类的类方法 答案: 6、函数重载是指 A)两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B)两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可 以不同 C)两个以上的函数名字不同,但形参的个数或类型相同 D)两个以上的函数取相同的函数名,并且函数的返回类型相同

7、下述哪个说法是不正确的 A)局部变量在使用之前无需初始化,因为有该变量类型的默认值B)类成员变量由系统自动进行初始化,也无需初始化 C)参数的作用域就是所在的方法 D)for语句中定义的变量,当for语句执行完时,该变量就消亡了答案:A 8、下列代码的执行结果是: public class Test6{ public static void main(String args[]){ int a=4,b=6,c=8; String s="abc"; } }

实验二 类的继承与派生

实验二类的继承与派生 班级:网络工程1班 姓名:倪冬生 学号:20112346017

一、实验目的 1. 掌握类的声明和使用。 2. 掌握类的声明和对象的声明。 3. 复习具有不同访问属性的成员的访问方式。 4. 观察构造函数和析构函数的执行过程。 5. 学习声明和使用类的继承关系,声明派生类; 6. 熟悉不同继承方式下对基类成员的访问控制; 二.实验内容 1. 设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、 id(身份证号)等等。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号charid[16]。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、组合。在测试程序中声明people 类的对象数组,录入数据并显示。 2. 从people(人员)类派生出student(学生)类,添加属性:班号char classNO[7];从people 类派生出teacher(教师)类,添加属性:职务char pship[11]、部门char departt[21]。从student 类中派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacher adviser;从graduate 类和teacher 类派生出TA(助教博士生)类,重载相应的成员函数,测试这些类。 三 . 实验步骤 1.程序代码 #include #include using namespace std; class Date //日期类 { private: int year; int month; int day; public: Date(){} //默认构造 Date(int y,int m,int d) //带参构造 { year=y; month=m; day=d; }

C++实验一-类与简单对象

天津理工大学实验报告学院(系)名称:计算机与通信工程学院

测试程序会出现什么错误?为什么?如何对已有的构造函数进行适当的修改? (4)结合第(2)和第(3)步的修改和运行结果:分析创建不同的对象时如何调用适当的构造函数? 1. . 2. 调用一次构造函数。 3. Coordinate p4; Coordinate p5(2);错误,因为类没有默认的构造函数,也没有无参数的构造函数和一个参数的构造函数; 改正可为: 将Coordinate(int x1, int y1){x=x1; y=y1;} 改为Coordinate(int x1=0, int y1=0){x=x1; y=y1;} 4.系统会自动根据参数的类型和参数的个数,调用合适的函数。 2. 根据注释语句的提示实现类Date的成员函数,并将完整的程序编译、连接成功以保证程序能够正确运行。 #include class Date{ public: void printDate(); //显示日期 void setDay(int); //设置日的值 void setMonth(int); //设置月的值 void setYear(int); //设置年的值

3. 下面是一个计算器类的定义,请完成该类的成员函数的实现,并设计一个主函数使用该类和相关成员函数以测试 该类设计的正确性。 #include using namespace std; class coutner { public: counter(int number); //构造函数 void increment(); //给value原值加1 void decrement(); //给value原值减1 int getvalue(); //计数器值 void print(); //显示计数 privat取得e: int value; //数据成员 }; int main(){ ... //定义counter类的几个对象并调用有关成员函数 return 0; } 程序如下: #include using namespace std; class coutner{ public: coutner(int number):value(number) //构造函数 {} void increment(); //给value原值加1 void decrement(); //给value原值减1 int getvalue(); //取得计数器值

c++实验3 派生类与继承1

实验三派生类与继承 一、实验目的 1、学习类的继承,能够定义和使用类的继承关系。 2、学习派生类的声明与定义方法。 3、掌握类的定义和对象的声明。 4、熟悉公有派生和私有派生的访问特性。 5、掌握派生类构造函数和析构函数的执行顺序。 6、掌握利用访问声明调整基类成员在派生类中的访问属性。 二、试验内容 1、下面的程序可以输出ASCII字符与所对应的数字的对照表。修改下列程序,使其可以输出字母a到z(或任意两个字符间)与所对应的数字的对照表。class table { public: table(int p) { i=p; } void ascii(void); protected: int i; }; void table::ascii(void) { int k=1; for (;i<127;i++) { cout<

c=m; } void print(void); protected: char *c; }; void der_table::print(void) { cout< using namespace std; #include class table { public: table(int p) { i=p; } void ascii(void); protected: int i; }; void table::ascii(void) { int k=1; for (;i<=122;i++)

C++类和对象实验报告

计算机科学与技术实验报告 实验二类和对象(1) 姓名:易XX 班级:计科二班学号:2015110121 实验目的:深入理解类和对象,学会定义类,申明私有、公有变量,学会定义对象,并调用成员函数,解决实际问题。 实验内容: (一)、题目要求: 定义一个描述角度的类CAngle,包含的内容如下: (1)私有成员变量value,表示角度,类型为double; (2)公有成员变量SetValue,实现功能是使用形参为value赋值。 声明为:viod SetValue(double); (3)公有成员函数GetCos,实现功能计算余弦值,并作为返回值返回。 声明为 double GetCos(); 编程实现如下功能:定义一个Cangle类的对象deg,调用成员函数设置deg的角度为30度,调用成员函数计算并输出deg的余弦值。 代码: #include #include using namespace std; #define PI 3.1415 //定义宏常量PI class CAngle{ double value; //定义角度 public: void Setvalue(double x){ value =x/180*PI; //把角度转化为弧度 } double Getcos(){ return ( cos(value) ); //计算cos值 } }; int main(){ CAngle deg; //定义一个Cangle类的对象deg deg.Setvalue(30); cout<

继承与派生(二)实验报告

学号:姓名:班级: 实验四继承与派生(二) 【实验目的】 1、理解多重继承的概念; 2、理解为了避免同同一基类出现多个重复的副本而采用的虚基类概念和虚拟继承; 3、学习利用虚基类解决二义性问题。 【实验内容】 题目: 2、设计一个用于人事管理的“people(人员)”基类。考虑到通用 性,仅只抽象出所有类型人员都有的属性:编号、姓名、性别、出生日期、身份证号等;从people(人员)类派生出student(学生)类,并添加属性:班号classNO;从people类派生出teacher(教师)类,并添加属性:职务principalship、部门Department;从student类派生出graduate (研究生)类,并添加属性:专业subject、导师teacher adviser(teacher 类);从graduate类和teacher类派生出TA(助教生)类。设计时注意虚基类的使用,注意重载相应的成员函数。测试这些类。

UML图: Date -year: int -month: int -day: int <>-Date(y: int, m: int, d: int) <>-Date(D: Date) +init(y: int, m: int, d: int): void +show(): void people #m_date: Date #m_no: long #m_ident_no: string #m_name: string #m_sex: string <>-people(no: long, name: string, sex: string, ident_no: string, year: int, month: int, day: int) <>-people(no: long, name: string, sex: string, ident_no: string, date: Date) <>-people(p: people) +init(no: long, name: string, sex: string, ident_no: string, year: int, month: int, day: int): void +init(no: long, name: string, sex: string, ident_no: string, date: Date): void +init(p: people): void +show(): void student #m_classno: string <>-student(person: people, classno: string) <>-student(stu: student) +show(): void teacher #m_principalship: string #m_department: string <>-teacher(p: people, principalship: string, department: string) <>-teacher(stu: teacher) +show(): void graduate #m_subject: string #m_adviser: teacher <>-graduate(s: student, subject: string, t: teacher) <>-graduate(g: graduate) +show(): void TA <>-TA(g: graduate, t: teacher) <>-TA(t: TA) +show(): void

相关文档