C++面向对象矩阵操作实践:动态内存管理与加减运算

需积分: 0 0 下载量 113 浏览量 更新于2024-06-30 收藏 88KB DOCX 举报
本篇文档是关于2018级计算机科学与技术专业学生熊宇的C++面向对象程序设计实践报告。报告的核心内容涉及矩阵操作,包括矩阵的动态内存管理、初始化、输入输出以及基本的数学运算。以下是详细的知识点总结: 1. **矩阵数据结构**: 使用C++定义了一个名为`Trc`的结构体,其中包含一个4x5的整型数组`Num`,用于存储矩阵元素。同时,通过`Mar`指针类型来引用这种结构体,方便操作。 2. **动态内存分配**: 程序中采用了`new`关键字进行动态内存申请,用于创建三个矩阵`MarA1`、`MarA2`和`MarA3`,它们都是`Trc`类型的指针。这是为了适应矩阵大小可能变化的需求,以及避免预先固定的数组大小限制。 3. **矩阵初始化函数** (`MarInit`):该函数接收一个`Mar`类型的指针作为参数,从标准输入流`cin`中读取用户输入,将矩阵元素赋值给`Num`数组。这展示了如何在C++中从键盘获取用户输入并构建矩阵。 4. **矩阵输出函数** (`MarPrint`):此函数用于格式化输出矩阵到控制台(`cout`),以便于查看矩阵元素。它接收一个`Mar`类型的指针,按行和列顺序展示矩阵内容。 5. **矩阵运算函数**: - `MarAdd`:实现了两个矩阵(`MarA1`和`MarA2`)的相加,将结果保存在`MarA3`中。这涉及遍历矩阵元素,对对应位置的元素执行加法运算。 - `MarSub`:类似地,`MarSub`函数实现了矩阵的相减操作,结果同样保存在`MarA3`中。 6. **矩阵运算的主程序**:在`main`函数中,首先动态创建矩阵并初始化,然后调用`MarAdd`和`MarSub`函数对矩阵进行加法和减法运算,并通过`MarPrint`函数输出结果。最后,通过`delete`关键字释放先前动态分配的矩阵空间,以避免内存泄漏。 这个实践报告展示了面向对象编程中处理矩阵的基本概念和技术,包括动态内存管理、函数重用和基本的矩阵操作,对于理解C++编程中的内存管理和数据结构有着实际的锻炼作用。