C++面向对象程序设计 实验报告 实验三

本文通过实例演示了C++中的继承与多态概念,包括单继承与多重继承的应用。通过人员类派生出员工类,实现了不同类型的员工信息展示;通过抽象基类图形类派生出长方形类和正方形类,展示了面积计算;最后通过火炮类和战车类多重继承实现了坦克类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验3 继承与多态

1. 实验目的

(1)掌握派生类的定义和实现方法;

(2)根据要求正确定义基类和派生类;

(3)根据要求正确定义虚函数;

2. 实验内容

(1)人员类、员工类、员工表类的定义和实现,并设计主程序进行测试。

(2)图形类、点类、长方形类、正方形类的定义和实现,并设计主程序进行测试。

(3)火炮类、战车类、坦克类的定义和实现,并设计主程序进行测试。

3. 实验要求

(1)员工类从人员类中派生,人员类和员工类的属性和方法设计合理。

(2)图形类为抽象类,提供统一的接口。

(3)长方形类和正方形类中实现图形类的接口。

(3)坦克类从火炮类和战车类派生。

4.实验代码

(1)人员类派生:

#include<iostream>
#include<string>
using namespace std;

class Person
{
public:
	Person(int, string, int);
	void display();
private:
	int num;
	string name;
	int age;
};

Person::Person(int n, string nam, int ag)
{
	num = n;
	name = nam;
	age = ag;
}

void Person::display()
{
	cout << endl << "num:" << num << endl;
	cout << "name:" << name << endl;
	cout << "age:" << age << endl;
}

class Worker :public Person
{
public:
	Worker(int, string, int, float);
		void display();
private:
	float salary;
};

Worker::Worker(int n,string nam,int ag,float s):Person(n,nam,ag),salary(s){}

void Worker::display()
{
	Person::display();
	cout << "Salary:" << salary << endl;
}

int main() 
{
	Person per1(1001, "Li", 25);
	Worker wor1(2001, "Wang", 24, 1500);
	Person*pt = &per1;
	pt->display();
	pt = &wor1;
	pt->display();
	system("pause");
	return 0;
}

运行截图:

(2)图形类接口:

#include <iostream>
using namespace std;

// 基类
class Shape
{
public:
	// 提供接口框架的纯虚函数
	virtual int getArea() = 0;
	void setWidth(int w)
	{
		width = w;
	}
	void setHeight(int h)
	{
		height = h;
	}
protected:
	int width;
	int height;
};

// 派生类
class Rectangle : public Shape
{
public:
	int getArea()
	{
		return (width * height);
	}
};

class Square : public Shape
{
public:
	int getArea()
	{
		return (width * width);
	}
};

int main(void)
{
	Rectangle Rect;
	Square  Squ;

	Rect.setWidth(5);
	Rect.setHeight(7);
	// 输出对象的面积
	cout << "长方形面积: " << Rect.getArea() << endl;

	Squ.setWidth(5);
	Squ.setHeight(7);
	// 输出对象的面积
	cout << "正方形面积: " << Squ.getArea() << endl;
	system("pause");
	return 0;
}

运行截图:

(3)多重继承:

#include<iostream>
#include<string>
using namespace std;

class Chariot			//战车类
{
public:
	Chariot(string nam, int w)
	{
		name = nam;
		weight = w;
	}
	void display()
	{
		cout << "车体名称:" << name << endl;
		cout << "车体重量:" << weight << endl;
	}
protected:
	string name;
	int weight;
};

class Gun				//火炮类
{
public:
	Gun(float ca, string na)
	{
		caliber = ca;
		gun_name = na;
	}
	void display()
	{
		cout << "火炮种类:" << gun_name << endl;
		cout << "火炮口径:" << caliber << endl;
	}
protected:
	string gun_name;
	float caliber;
};

class Tank :public Chariot, public Gun
{
public:
	Tank(string nam,int w,float ca,string na,float m):Chariot(nam,w),Gun(ca,na),money(m){}
	void show()
	{
		cout << "车体名称:" << name << endl;
		cout << "车体重量:" << weight << endl;
		cout << "火炮种类:" << gun_name << endl;
		cout << "火炮口径:" << caliber << endl;
		cout << "造价:" << money << "万元"<<endl;
	}
private:
	float money;
};

int main()
{
	Tank tan1("T-32",5000,0.32,"重型",300);
	tan1.show();
	system("pause");
	return 0;
}

运行结果:

 

实验内容: 1.和对象的定义和对象的定义和对象的定义和对象的定义,实现实现实现StudentStudentStudent成绩的基本员定义成绩的基本员定义成绩的基本员定义成绩的基本员定义成绩的基本员定义成绩的基本员定义;的基本函数功能的基本函数功能的基本函数功能的基本函数功能:学号的学号的提取,成绩的基本计算。提取,成绩的基本计算。提取,成绩的基本计算。提取,成绩的基本计算。提取,成绩的基本计算。 2.构造函数和析构造函数和析构造函数和析构造函数和析构造函数和析,实现象自动初始化和释放,实现象自动初始化和释放,实现象自动初始化和释放,实现象自动初始化和释放,实现象自动初始化和释放,实现象自动初始化和释放,实现象自动初始化和释放; 3.静态成员静态成员,实现数据共享,实现数据共享,实现数据共享,实现数据共享,实现数据共享;静态成员函数功能静态成员函数功能静态成员函数功能静态成员函数功能静态成员函数功能:计算N个学生的某科成绩总分和平均个学生的某科成绩总分和平均个学生的某科成绩总分和平均个学生的某科成绩总分和平均个学生的某科成绩总分和平均个学生的某科成绩总分和平均个学生的某科成绩总分和平均分。 4.友元函数和友元函数和友元函数和友元函数和实现函数对私有据的访问功能,实现函数对私有据的访问功能,实现函数对私有据的访问功能,实现函数对私有据的访问功能,实现函数对私有据的访问功能,实现函数对私有据的访问功能,实现函数对私有据的访问功能,实现函数对私有据的访问功能,实现函数对私有据的访问功能;友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任两个学生的某科成绩差。两个学生的某科成绩差。两个学生的某科成绩差。两个学生的某科成绩差。两个学生的某科成绩差。 5.友元实现友元实现友元实现友元实现友元实现TeacherTeacherTeacherStudentStudentStudent静态数据共享静态数据共享静态数据共享静态数据共享;友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号提取某班科成绩总分和平均。提取某班科成绩总分和平均。提取某班科成绩总分和平均。提取某班科成绩总分和平均。提取某班科成绩总分和平均。提取某班科成绩总分和平均。提取某班科成绩总分和平均。 6.派生实现访问基保护成员的功能派生实现访问基保护成员的功能派生实现访问基保护成员的功能派生实现访问基保护成员的功能派生实现访问基保护成员的功能派生实现访问基保护成员的功能派生实现访问基保护成员的功能派生实现访问基保护成员的功能派生实现访问基保护成员的功能派生实现访问基保护成员的功能;派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分计算等级。计算等级。 7.虚函数虚函数,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值