c++语言基础—多态—重载运算符complex类

el/2024/6/24 18:39:11

题目:
创建复数类complex,其中包含double类型数据成员real和image,分别表示复数的实域和虚域。为complex类重载运算符“+”和“-”,用来实现两个复数的加法和减法运算。要求重载函数是友元函数。
代码实现:

#include <iostream.h>
class Complex
{
public:Complex(){real=0; imag=0;}                     //默认构造函数Complex(double r, double i){real=r; imag=i;}   //构造函数static Complex get1(Complex &, Complex &); //定义静态成员函数get1static Complex get2(Complex &, Complex &); //定义静态成员函数get2void display(); //定义成员函数displayfriend Complex operator+(Complex &c1, Complex &c2)//重载运算符+函数,类的友元函数
{return Complex::get1(c1, c2);
}friend Complex operator-(Complex &c1, Complex &c2)//重载运算符-函数,类的友元函数
{return Complex::get2(c1, c2);
}
private:double real;double imag;
};
//成员函数get1,可以访问Complex类的私有变量
Complex Complex::get1(Complex &c1, Complex &c2)
{return Complex(c1.real+c2.real, c1.imag+c2.imag);
}
//成员函数get2,可以访问Complex类的私有变量
Complex Complex::get2(Complex &c1, Complex &c2)
{return Complex(c1.real-c2.real, c1.imag-c2.imag);
}//display函数
void Complex::display()
{cout<<"("<<real;if (imag>=0) cout<<"+";cout<<imag<<"i)"<<endl;
}
int main()
{Complex c1(2.5, 3), c2(4, -7),c3,c4;     //定义Complex类的对象c1,c2,c3,c4c3=c1+c2;c4=c1-c2;c3.display();c4.display();return 0;
}

温馨提示:
大家如果使用VC6编译器可能会报错:fatal error C1001: INTERNAL COMPILER ERROR
解决方法:
将#include 改成 #include<iostream.h>
然后去掉 using namespace std;
编译即可通过!


http://www.ngui.cc/el/3419309.html

相关文章

面向对象的课程设计——成绩管理系统

c面向对象的课程设计 题目&#xff1a;学生成绩管理系统 输入一个班级的学生基本信息&#xff08;包括学号&#xff0c;姓名&#xff0c;性别&#xff0c;科目&#xff09;&#xff0c;对N门考试的成绩进行管理&#xff08;例N5&#xff09; 要求 用户录入每个学生每门课程的分…

python网络爬虫与信息提取实例

目录1.百度/360搜索关键词提交2.网络图片的爬取和存储3.中国大学排名定向爬虫1.百度/360搜索关键词提交 搜索引擎关键词提交接口 百度的关键词接口&#xff1a; http://www.baidu.com/s?wdkeyword 360的关键词接口&#xff1a; http://www.so.com/s?qkeyword 功能描述&#…

数学建模之预测模型简要分析

以下对数学建模常用的几种预测方法进行归纳总结&#xff1a; 1.灰色预测模型&#xff1a; 1.1 GM&#xff08;1,1&#xff09;预测模型实际操作 1&#xff09;数据检验与处理&#xff0c;判断数据列的级比是否都落在可容覆盖内&#xff0c;从而判断已知该数据列是否可进行灰色预…

MATLAB学习与使用:向量及其运算

1.MATLAB向量及其运算 (1)直接输入向量&#xff1a;a [1,2,3,4],b [2 1 4 5],c [1;2;3;4] a为行向量 b为行向量 c为列向量 (2)利用冒号表达式生成向量&#xff1a;a 1:2:12,b 1:5 默认间距为1 (3)线性等分向量的生成&#xff1a; y linspace(x1,x2)%默认生成100维的行向…

MATLAB学习与使用:使用矩阵绘制三维图形

MATLAB绘制三维图形 1.基本的绘图命令 1&#xff09;plot3函数 plot3(x,y,z)%x,y,z为向量或者矩阵 注意x,y,z全为向量时向量长度必须相同 plot3(x,y,z,b.,MarkerSize,0.5) % MarkerSize 表示点的大小&#xff0c;b.表示绿色的点。 eg.绘制三维螺旋线&#xff08;向量为参数&…

opencv学习与使用:图像边缘算法

图像边缘算法 numpy使用指南[菜鸟教程]http://www.runoob.com/numpy/numpy-tutorial.html opencv使用指南[官方文档]http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html 完整代码如下&#xff08;python3&#xff09; #-*- coding:utf-8 -*- #code…

opencv学习与使用:图像匹配

1.差分矩阵求和 numpy使用指南[菜鸟教程]http://www.runoob.com/numpy/numpy-tutorial.html opencv使用指南[官方文档]http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html 实现差分矩阵的算法 差分矩阵求和算法的核心在于差分矩阵&#xff0c;实质为…

LeetCode 初级算法数组篇

从排序数组中删除重复项 给定一个排序数组&#xff0c;你需要在原地删除重复出现的元素&#xff0c;使得每个元素只出现一次&#xff0c;返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1…

C语言中fscanf函数读取double型浮点数的问题

在C语言里面, 将一个浮点数输出到文件中, 可以使用符号%f, 如 double a 0.0;fprintf(fp, "a %f", a);而如果要从文件中读取一个double类型的浮点数, 就不能用%f, 而要用%lf才可以. 如 double a;float b;fscanf(fp, "%f", &a); // 这里得到的a的数…

操作系统课程设计-页式虚拟存储管理页面置换算法-c++描述

1&#xff0e;目的和要求 存储管理的主要功能之一是合理的分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是&#xff1a;通过编写和调试请求页式存储管理中页面置换算法的模拟程序以加深对存储管理方案的理解&#xff0c;了解虚拟存储技术的特点&#xff0…