C++声明一个复数类Complex?

首先回忆下以前学的函数重载

  • 函数重载的本质为相互独立的不同函数
  • 通过函数名函数参数来确定函数调用
  • 无法直接通过函数名得到重载函数的入口地址
  • 函数重载必然发生在同一个作用域
  • 静态成员函数能与普通成员函数建立重载关系
  • 全局函数和成员函数不能构成重载关系

大家都知道,在C里,有'+,-,*,/'这些操作符,且它们的功能就是实现普通变量运算。

由于C++是面向对象的,遇到的变量大多都是对象,所以优化了C里的操作符,使它们拥有了重载能力.能通过一定方式,使对象能进行'+,-,*,/'等运算.

操作符的重载是以函数的方式进行.

操作符重载,通过operator关键字在函数前定义:

操作符重载有几种方式 : 全局操作符重载函数、全局操作符重载函数

编译器首先会判断运算的若是对象,就会先从类里寻找成员操作符重载函数,若没找到,就会再去全局里寻找全局操作符重载函数.

  • 操作符重载不能改变原操作符的优先级
  • 操作符重载不能改变操作数的个数
  • 在C++中,有些操作符必须需要有对象支持,所以只能为成员函数.这种被称为一元操作符

 比如赋值(=)、下标([])、下标([])、调用(())和成员访问箭头(->):

  • 有些操作符既可以当做成员操作符重载函数,也可以当做全局操作符重载函数,由于函数参数可以多个,便称为二元操作符

以加法(+)为例,当设为全局操作符重载函数时,执行

以加法(+)为例,当设为成员操作符重载函数时,执行

多个重载的操作符重载函数

由于操作符重载函数带参数,所以可以存在多个相同的操作符重载函数

1.接下来,来个全局操作符重载函数例子:

//声明友元函数,可以使用私有成员变量

2.换成成员操作符重载函数例子:

由于C++里,没有复数的慨念,而在刚刚又学习了操作符重载,所以接下来便通过操作符重载来实现复数类

+ - :  结果 = 两个实部进行加减,两个虚部进行加减

求模成员函数 : 等于a^2+b^2的算术平方根

所以复数类的操作符重载共有以下几个:

}

内容简介:蔡国榕 陈水利 陈雪娟 储理才 黄振坤 李青岩 梁宗旗 林应坚 陶胜 魏春金 吴云东 晏卫根 张东晓

}

c课设报告书复数类的设计与实现


成 绩 评 定 表 学生姓名 李勇强 班级学号 专 业 通信工程 课程设计题目 复数类的设计与实现 评 语 组长签字: 成绩 日期 20 年 月 日 课程设计任务书 学 院 信息科学与工程学院 专 业 通信工程 学生姓名 李勇强 班级学号 课程设计题目 复数类的设计与实现 实践教学要求与任务 设计一个复数类,复数类的数据成员是real和imag,它们的数据类型是double,分别表示复数的实部和虚部,要求如下: (1)编写一个带有缺省参数的构造函数,默认值为(0,0),实现一个复数的构造。 (2)编写一个拷贝构造函数,实现一个复数的拷贝构造。 (3)编写一个析构函数,在函数中输出(real,imag)被析构,例如:如果复数的实部为1,虚部为2,则被析构时程序输出:“(1,2)被析构”。 (4)重载运算符“+”为复数类的成员函数,其功能是返回两个复数的相加的结果。 (5)重载运算符“-”为复数类的成员函数,其功能是返回两个复数的相减的结果。 (6)重载运算符“*”为复数类的友元函数,其功能是返回两个复数的相乘的结果。 (7)重载运算符“/”为复数类的友元函数,其功能是返回两个复数的相除的结果。 (8)重载单目运算符“-”为复数类的友元函数,其功能是返回当前复数的相反数。 (9)重载运算符“>>”为复数类的友元函数,其功能是按照以格式(real,imag)。 (10)输入复数。例如:如果复数的实部为1,虚部为2,则输入的格式是“(1,2)”。 (11)重载运算符“<<”为复数类的友元函数,其功能是按照以格式(real,imag) (12)输出复数。例如:如果复数的实部为1,虚部为2,则输出的结果是“(1,2)”。 (13)以上函数在类的内部写出函数原型,在类的外部写出函数实现代码,最后编写一个主函数main测试以上的函数功能。 工作计划与进度安排 第17周:分析题目,查阅课题相关资料,进行类设计、算法设计; 第18周:程序的设计、调试与实现; 第19周:程序测试与分析,撰写课程设计报告,进行答辩验收。 201 年 月 日 专业负责人: 201 年 月 日 学院教学副院长: 201 年 月 日 摘 要 本文采用了C++语言来完成复数类的设计与实现。首先设计了复数类,在类中定义了复数的实部和虚部,然后在类中设计构造函数和析构函数用于对象的初始化和清理,类中的重载运算符函数用于实现对复数的一些基本运算和输入输出。程序分别采用Visual C++ 6.0的控制台工程和MFC工程来运行。最终,通过对两种程序的测试结果表明:复数类的方法函数设计正确,两种程序均能正确实现复数类方法函数的功能。 关键词:复数;复数类;控制台工程;MFC工程 目 录1 需求分析 1 2 算法基本原理 1 3 类设计 2 4 基于控制台的应用程序 3 4.1 类的接口设计 3 4.2 类的实现 4 4.3 主函数设计 6 4.4 基于控制台的应用程序测试 7 5 基于MFC的应用程序 8 5.1 基于MFC的应用程序设计 9 5.1.1 MFC程序界面设计 9 5.1.2 MFC程序代码设计 12 5.2基于MFC的应用程序测试 15 结 论 19 参考文献 20 1 需求分析 (1)(2)(3) 算法基本原理 (1)构造函数是一种特殊的成员函数,在建立对象时自动执行。其名字与类名同名,不具有任何类型,不返回任何值。构造函数中参数的值可以指定为默认值。拷贝构造函数只有一个参数,这个参数是本类的对象(一般约定加const声明)。 (2)析构函数也是一个特殊的成员函数,其名字是类名前加一个“~”符号。构造函数不返回任何值,无函数类型和函数参数。当对象的生命期结束时,自动执行析构函数。 (3)运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数。 (4)复数的加法法则: 设z1=a+bi,z2=c+di是任意两个复数,则它们的和为(a+bi)+(c+di)=(a+c)+(b+d)i。两个复数的和依然是复数,它的实部是原来两个复数实部的和,它的虚部是原来两个虚部。 (5)复数的减法法则: 设z1=a+bi,z2=c+di是任意两个复数,则它们的差是 (a+bi)-(c+di)=(a-c)+(b-d)i。两个复数的差依然是复数,它的实部是原来两个复数实部的差,它的虚部是原来两个虚部的差。 (6)复数的乘法法则: 设z1=a+bi,z2=c+di是任意两个复数,那么它们的积(a+bi)(c+di)=(ac-bd)+(bc+ad)i。把两个复数相乘,类似两

}

我要回帖

更多关于 c语言复数运算结构体 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信