面向对象课程设计实验六:重载与多态

简介: 面向对象课程设计实验六:重载与多态

一、面向对象课程设计作品(基于MFC的仓库管理系统完整工程完整工程):

面向对象课程设计作品(完整)(也适用于软件工程大实验).7z_采用面向对象方法分析,设计和实现订货系统。-C/C++文档类资源-CSDN下载

二、实验六题目:

       在用计算机处理大批量数据时,如一些网络文本、图像分析的计算,往往把对象描述成向量的形式。向量的处理在计算时可以并行化,从而提高计算的效率。其中,广义上的向量包括常用的一维向量、二维矩阵等。请定义一维向量类、以及二维矩阵类,并在主函数中调用测试。要求:

1 设计恰当继承关系,并设计类的数据成员。

2 具有无参和有参的构造函数(第一个参数为初始数据,第二个参数为向量的维度)。

3 具有虚函数完成向量的欧式距离运算,并在派生类中对虚函数进行重新定义。

4 实现减法、乘法、赋值运算符的重载。

5 使用基类指针和派生类指针,分别指向基类和派生类虚函数进行调用,并观察结果的差别。

#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;//蓝多多作业
class vector//定义向量类
{
private:
  float n;
public:
  vector()//无参构造函数
  {}
  vector(float a)//有参构造函数
  {
    n = a;
  }
  virtual float distance(vector &b, vector&c)//虚函数
  {
    return (float)(fabs(c.n - b.n));//求出一范距离
  }
  vector operator+(vector&a)//加法运算符重载
  {
    n += a.n;
  }
  vector operator-(vector&b)//减法运算符重载
  {
    n -= b.n;
  }
  vector operator=(vector&c)//赋值运算符重载
  {
    n = c.n;
  }
};
class matrix :public vector//定义向量类的派生类——矩阵类
{
private:
  float x[2];
public:
  matrix()//派生类无参构造函数
  {}
  matrix(float a[], int b)//派生类有参构造函数 初始化
  {
    for (int i = 0; i < b; i++)
      x[i] = a[i];
  }
  virtual float distance(matrix &a, matrix &b, int n)//派生类虚函数
  {
    float p = 0, m;
    for (int i = 0; i < n; i++)
    {
      m = pow(a.x[i] - b.x[i], 2.0);
      p = p + m;
    }
    return sqrt(p);//返回平方值并开根号求得欧氏距离
  }
};
int main()
{
  float m;
  vector *n;
  vector a(4), b(9);//一维向量
  n = &a;
  m = n->distance(a, b);
  cout << "一范距离为:" << setw(4) << m << endl;
  float a2[2] = { 2,3 }, b2[2] = { 4,6 };
  matrix c2(a2, 2), c3(b2, 2);//二维矩阵
  matrix *p;
  p = &c2;
  m = p->distance(c2, c3, 2);
  cout << "欧氏距离为:" << setw(4) << m << endl;
  system("pause");//输出结果后看二者比较
  return 0;
}

image.gif

相关文章
|
物联网 测试技术 API
LLM 大模型学习必知必会系列(九):Agent微调最佳实践,用消费级显卡训练属于自己的Agent!
LLM 大模型学习必知必会系列(九):Agent微调最佳实践,用消费级显卡训练属于自己的Agent!
LLM 大模型学习必知必会系列(九):Agent微调最佳实践,用消费级显卡训练属于自己的Agent!
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
747 34
|
机器学习/深度学习 自然语言处理 算法
必知的技术知识:IK分词器实现原理剖析——一个小问题引发的思考
必知的技术知识:IK分词器实现原理剖析——一个小问题引发的思考
1078 0
|
SQL 存储 安全
Web安全-CSRF跨站请求伪造
Web安全-CSRF跨站请求伪造
724 4
|
机器学习/深度学习 存储 分布式计算
阿里开源首个DL框架,新型XDL帮你搞定大规模稀疏数据
12 月 21 日,阿里巴巴旗下的大数据营销平台阿里妈妈开源了其应用于自身广告业务的算法框架 X-Deep Learning(XDL)。该框架非常擅长处理高维稀疏数据,对构建推荐、搜索和广告系统非常有优势。此外,阿里还配套发布了一系列官方模型,它们都是阿里在实际业务或产品中采用的高效模型。
2071 0
阿里开源首个DL框架,新型XDL帮你搞定大规模稀疏数据
|
NoSQL 算法 Java
Redis Proxy RT上升后连接倾斜
本文细致地描述了关于Redis Proxy RT上升后连接倾斜问题的排查过程和根本原因,最后给出了优化方案。
|
设计模式 安全 API
C++视角下的Qt按钮:从基础应用到高级定制(三)
C++视角下的Qt按钮:从基础应用到高级定制
1048 0
|
调度 C++
PV操作知识点
PV操作知识点
1372 1
|
自然语言处理 文字识别 测试技术
测试CLIP zero-shot learning
CLIP是OpenAI的多模态预训练模型,使用对比学习在大量文本-图像对上训练,便于迁移至各种下游任务,如图像分类、OCR等。它通过分别编码文本和图像并计算相似度来评估匹配度。在图像分类测试中,CLIP能有效识别图像类别。此外,CLIP还可用于图像描述生成、文本搜图和文本生成图片(如AIGC)。近期研究致力于优化CLIP的数据、模型和监督方法。5月更文挑战第11天
543 0
|
算法 Python
函数的递归调用与嵌套调用详解
函数的递归调用与嵌套调用详解
1462 0