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

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

一、面向对象课程设计作品(基于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

相关文章
|
4月前
|
存储 编译器 C++
C++基础知识(七:多态)
多态是面向对象编程的四大基本原则之一,它让程序能够以统一的接口处理不同的对象类型,从而实现了接口与实现分离,提高了代码的灵活性和复用性。多态主要体现在两个层面:静态多态(编译时多态,如函数重载)和动态多态(运行时多态,主要通过虚函数实现)。
|
5月前
|
Java
JavaSE——面向对象高级二(1/4)-面向对象三大特征之三-多态(认识多态、使用多态的好处、多态下的类型转换问题)
JavaSE——面向对象高级二(1/4)-面向对象三大特征之三-多态(认识多态、使用多态的好处、多态下的类型转换问题)
35 0
|
存储 算法 编译器
03-📝C++核心语法|面向对象1【 C++编程规范、类和对象、面向对象程序设计案例、对象的构造和析构、C++面向对象模型初探】
复习`C++核心语法`,且适当进行汇编探索底层实现原理,进一步夯实基础,为以后的`底层开发`、`音视频开发`、`跨平台开发`、`算法`等方向的进一步学习埋下伏笔。
03-📝C++核心语法|面向对象1【 C++编程规范、类和对象、面向对象程序设计案例、对象的构造和析构、C++面向对象模型初探】
|
设计模式
代码学习-多态
代码学习-多态
58 0
|
Java
【Java面向对象】多态的详细介绍,简单易懂,看这一篇就够了
【Java面向对象】多态的详细介绍,简单易懂,看这一篇就够了
161 0
|
编译器 C++
c++面向对象程序设计教程——类(一)
c++面向对象程序设计教程——类(一)
169 0
|
C++
c++面向对象程序设计教程——类(二)
c++面向对象程序设计教程——类(二)
118 0
面向对象程序设计第九章:多态
面向对象程序设计第九章:多态
139 0
面向对象程序设计第六章:继承
面向对象程序设计第六章:继承
123 0
|
存储 C语言 C++
面向对象实验 ——(二)类与对象
面向对象实验 ——(二)类与对象
104 0
面向对象实验 ——(二)类与对象