淮海工学院计算机科学系
实验报告书
课程名:
《VC++程序设计》
题 目:
类的定义与实现
班 级:
计算机054
学 号:
110511414
姓 名:
马媛媛
目的与要求
编程实现类的定义,掌握C++面向对象基本特性,如抽象、继承、重载、多态,理解虚函数、构造函数、析构、模板等基本概念与基本语法
实验内容或题目
定义时间类Time,给出类的成员属性及构造函数、析构函数及普通方法的定义,利用定义的类定义对象,并对对象的属性进行访问;
定义一个类Point,然后定义类Point的派生类Circle,再定义Circle的派生类Cylinder;
通过函数参数类型的不同实现函数重载;
函数模板的定义与使用。
书上习题——编写一个工资管理程序,将雇员类作为所有类的基类,其派生类包括经理类,销售员类,计件工类和小时工类。经理享有固定的周薪;销售员的收入是一小部分的基本工资加上销售额的提成;计件工的收入完全取决于其生产的工件数量;小时工的收入以小时计算,再加上加班费。
实验步骤与源程序
1启动Visual C++ 6.0,进入控制台应用模式;
2/(1)编写实验内容1的代码,代码如下:
#include
class Time{
private:
int hour;
int minute;
int second;
public:
Time(int, int, int); // 构造函数
~Time(); // 析构函数
// . . . . . .
};
Time::Time(int h, int m, int s)
{
hour=h; // 对私有成员变量初始化
minute=m;
second=s;
cout<<"The constructor be called: "<
class Point // 定义基类Point
{
protected:
int x, y;
public:
Point(int a=0, int b=0) // 含有缺省参数值的构造函数也是默认的构造函数
{ x=a; y=b; cout<<"Point constructor:"<<'['<
class Complex
{
private: // 声明为私有成员,能够在成员函数(运算符函数)中访问
float r; // 实部
float i; // 虚部
public:
Complex(float x=0, float y=0) { r=x; i=y; };
Complex operator+(Complex);
void Display() { cout<r+other.r; // 可以省略this指针
temp.i=this->i+other.i;
return temp;
}
void main()
{
Complex complex1(3.34f, 4.8f), complex2(12.8f, 5.2f);
Complex complex;
complex=complex1+complex2; // 进行两个复数的相加运算
complex.Display();
}
分析:本题是对于运算符重载的运用,上例中的重载运算符为+,声明为Complex operator+(Complex);然后调用的在complex=complex1+complex2;通过运算符重载从而实现复数和加法运算。
(4)编写实验内容3的代码,代码如下:
#include
template // 使用2个类型参数
class MyTemClass // 定义模板类
{
private:
T1 x;
T2 y;
public:
MyTemClass(T1 a, T2 b) { x=a; y=b; };
void ShowMax() { cout<<"MaxMember="<<(x>=y?x:y)< mt(a, b); // 声明模板类的对象
mt.ShowMax();
}
分析:类模板可用来生成多个功能相同而某些数据成员的类型不同或成员函数的参数及返回值的类型不同的类。声明的的样子如上:
template // 使用2个类型参数
class MyTemClass // 定义模板类
{
//.........
};
声明模板类的对象则是: MyTemClass mt(a, b);这里的对象为mt,而变量a和b的类型分别为MyTemClass中的int和float型。
(5)课后习题程序代码:
//工资管理程序
#include"iostream.h"
#include"string.h"
#include"stdlib.h"
class Employee
{
public:
char Name[27];
int Age;
char *Postion;
int Salary;
public:
show()
{
cout<<"姓名:"<