课 程 实 验 报 告
课程名称:面向对象程序设计
实验名称:面向对象的整型队列编程
院 系 :计算机科学与技术
专业班级 :
学 号 :
姓 名 :
指导教师 :
年 月 日
面向对象程序设计实验报告
- 1 -
一、需求分析
1. 题目要求
整型队列是一种先进先出的存储结构,对其进行的操作通常包括:向队列尾部添加一个
整型元素、从队列首部移除一个整型元素等。整型循环队列类 QUEUE 及其操作函数采用面
向对象的 C++语言定义,请将完成上述操作的所有如下函数采用 C++语言编程, 然后写一
个 main 函数对队列的所有操作函数进行测试,请不要自己添加定义任何新的函数成员和数
据成员。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
class QUEUE{
int* const elems; //elems 申请内存用于存放队列的元素
const int max; //elems 申请的最大元素个数为 max
int head, tail; //队列头 head 和尾 tail,队空 head=tail;初始 head=tail=0
public:
QUEUE(int m); //初始化队列:最多申请 m 个元素
QUEUE(const QUEUE& q); //用 q 深拷贝初始化队列
QUEUE(QUEUE&& q)noexcept; //用 q 移动初始化队列
virtual operator int() const noexcept; //返回队列的实际元素个数
virtual int size() const noexcept; //返回队列申请的最大元素个数 max
virtual QUEUE& operator<<(int e); //将 e 入队列尾部,并返回当前队列
virtual QUEUE& operator>>(int& e); //从队首出元素到 e,并返回当前队列
virtual QUEUE& operator=(const QUEUE& q);//深拷贝赋值并返回被赋值队列
virtual QUEUE& operator=(QUEUE&& q)noexcept;//移动赋值并返回被赋值队列
virtual char * print(char *s) const noexcept;//打印队列至 s 并返回 s
virtual ~QUEUE(); //销毁当前队列
}
编程时应采用 VS2019 开发,并将其编译模式设置为 X86 模式,其他需要注意的事项说
明如下:
(1)用 QUEUE(int m)对队列初始化时, 为其 elems 分配 m 个整型元素内存,并初始
化 max 为 m,以及初始化 head=tail=0。
(2)对于 QUEUE(const QUEUE& q)深拷贝构造函数,在用已经存在的对象 q 深拷贝
构造新对象时,新对象不能共用已经存在的对象 q 的 elems 内存,新对象的 elems 需要分
配和 q 为 elems 分配的同样大小的内存,并且将 q 的 elems 的内容深拷贝至新对象分配的
内存;新对象的 max、head、tail 应设置成和 q 的对应值相同。
评论0