使用运算符重载实现复数的加法运算
2014-06-10 17:26
204 查看
在使用运算符重载之前先使用成员函数实现复数相加的算法为:
执行结果:
使用运算符重载实现两个复数相加
执行结果:
算法分析:
上面的两段代码都实现了两个复数相加
处理复数相加部分的代码基本一样唯一的不同就是函数的声明和定义不同
使用类中的对象函数声明为: Complex complex_add(Complex &c1);
使用运算符重载的形式声明为: Complex operator+(Complex &c1);
通过上面两个形式可知普通的成员函数的声明方式为: typename f()
运算符重载函数声明的形式是: 返回值的类型 operator 运算符 函数名(参数)
类中成员函数定义的形式:返回值得类型 类名 :: 成员函数名(参数)
运算符重载函数定义的形式:返回值的类型 类名 :: operator 运算符 成员函数名(参数)
在主函数中需要调用成员函数才能执行复数相加的运算: c3 = c1.complex_add(c2)
而使用运算符重载可以直接: c3 = c1 + c2
使用重载函数更容易明白
#include <iostream> using namespace std; class Complex//复数类 { public: //定义默认构造函数初始化数据成员 Complex() { real = 0; imag = 0; } //定义初始化表初始化Complex类 Complex(double r, double i):real(r),imag(i){} //声明成员函数,实现复数相加 Complex complex_add(Complex &c1); void display( );//显示复数 private: double real;//复数的实部 double imag;//复数的虚部 }; //实现复数相加 Complex Complex::complex_add(Complex &c1) { Complex c2; c2.real = c1.real + real; c2.imag = c1.imag + imag; return c2; } void Complex::display( )//显示复数 { cout<<real<<'+'<<imag<<'i'<<endl; } int main( ) { Complex c1(8,2), c2(7,10), c3; cout<<"c1 = "; c1.display(); cout<<"c2 = "; c2.display(); //执行两个复数相加 c3 = c1.complex_add(c2); cout<<"c1 + c2 = "; c3.display(); system("pause"); }
执行结果:
使用运算符重载实现两个复数相加
#include <iostream> using namespace std; class Complex//复数类 { public: //定义默认构造函数初始化数据成员 Complex() { real = 0; imag = 0; } //定义初始化表初始化Complex类 Complex(double r, double i):real(r),imag(i){} //声明重载运算符函数(实现两个复数相加) Complex operator+(Complex &c1); void display( );//显示复数 private: double real;//复数的实部 double imag;//复数的虚部 }; //定义重载运算符函数实现复数相加 Complex Complex::operator+(Complex &c1) { Complex c2; c2.real = c1.real + real; c2.imag = c1.imag + imag; return c2; } void Complex::display( )//显示复数 { cout<<real<<'+'<<imag<<'i'<<endl; } int main( ) { Complex c1(8,2), c2(7,10), c3; cout<<"c1 = "; c1.display(); cout<<"c2 = "; c2.display(); //使用运算符重载实现两个复数相加 c3 = c1 + c2; cout<<"c1 + c2 = "; c3.display(); system("pause"); }
执行结果:
算法分析:
上面的两段代码都实现了两个复数相加
处理复数相加部分的代码基本一样唯一的不同就是函数的声明和定义不同
使用类中的对象函数声明为: Complex complex_add(Complex &c1);
使用运算符重载的形式声明为: Complex operator+(Complex &c1);
通过上面两个形式可知普通的成员函数的声明方式为: typename f()
运算符重载函数声明的形式是: 返回值的类型 operator 运算符 函数名(参数)
类中成员函数定义的形式:返回值得类型 类名 :: 成员函数名(参数)
运算符重载函数定义的形式:返回值的类型 类名 :: operator 运算符 成员函数名(参数)
在主函数中需要调用成员函数才能执行复数相加的运算: c3 = c1.complex_add(c2)
而使用运算符重载可以直接: c3 = c1 + c2
使用重载函数更容易明白
相关文章推荐
- c++语言 运算符重载 使用重载运算符实现类的加法运算
- (PHP实现)只使用++运算实现加法,减法,乘法,除法
- 使用shell脚本实现加法乘法运算
- Java实现两个复数的加法运算
- 程序中不使用“+”法运算,实现整数加法运算
- 通过运算符重载实现复数运算
- 不使用加减乘除+-*/,实现加法运算(使用位运算符)
- 使用C++的string实现高精度加法运算的实例代码
- 第二学期第八周项目1--实现复数类中的运算符重载(两个复数运算)
- 使用C++的string实现高精度加法运算
- 使用 & ^ << 等 位符实现加法运算
- 深入理解异或运算 xor 的含义——再探不使用加减乘除实现加法运算、不使用额外空间交换两个变量的值
- 第二学期第八周项目1--实现复数类中的运算符重载(两个复数的运算友元)
- 多项式加法运算 使用链表实现
- (PHP实现)只使用++运算实现加法,减法,乘法,除法
- 不使用四则运算实现加法运算
- c++实现复数运算(运算符重载)
- 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算
- 使用运算符重载实现复数的四则运算
- 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)