2 u012456390 u012456390 于 2014.04.27 19:48 提问

关于c++中运算符的重载

定义复数类型,如何用成员函数或友元函数实现运算符加,减,乘,除的重载问题

1个回答

u012388338
u012388338   2014.04.29 09:00

给你一个程序,你看看
complex.h
class complex //复数类声明
{
public: //外部接口
complex(double r=0.0,double i=0.0){real=r;imag=i;} //构造函数
complex operator + (complex c2); //+重载为成员函数
complex operator - (complex c2); //-重载为成员函数
void display(); //输出复数
private: //私有数据成员
double real; //复数实部
double imag; //复数虚部
};
complex.cxx
#include"complex.h"
#include"iostream.h"

complex complex::operator +(complex c2) //重载函数实现
{
complex c;
c.real=c2.real+real;
c.imag=c2.imag+imag;
return complex(c.real, c.imag);
}
complex complex::operator -(complex c2) //重载函数实现
{
complex c;
c.real=real-c2.real;
c.imag=imag-c2.imag;
return complex(c.real,c.imag);
}
void complex::display()
{ cout<<"("<<real<<","<<imag<<")"<<endl; }

app.cxx
#include
#include"Complex.h"
using namespace std;
int main() //主函数
{ complex c1(5,4),c2(2,10),c3; //声明复数类的对象
cout<<"c1="; c1.display();
cout<<"c2="; c2.display();
c3=c1-c2; //使用重载运算符完成复数减法
cout<<"c3=c1-c2=";
c3.display();
c3=c1+c2; //使用重载运算符完成复数加法
cout<<"c3=c1+c2=";
c3.display();
return 0;
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言之重载运算符()/[]/++/->等运算符
C语言之重载运算符()/[]/++/->等预算符文章链接:知识点 重载()运算符; 重载[]运算符; 重载++和->运算符; 新名词记录{operator} 概述operator操作符一文包括两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换)。这是C++和pascal扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要
c加加+-*/前置++后置++运算符重载
运算符重载注意点: 1.算术和关系操作符返回的是一个左值或右值,而不是一个引用 2.赋值操作符一定要定义为成员函数如“=” 3.一般而言,赋值操作符和复合赋值操作符应返回左操作数的引用如"="和''+=" C++不允许赋值运算符被重载为全局形式,这是因为如果可以写出全局形式的赋值运算符函数的话,我们可以写出这样的函数: [cpp] view plain copy
关于重载流插入运算符和流提取运算符的问题
在C++编译系统中,其类库中提供输入流类istream和输出流类ostream,cin和cout分别是两个类的对象。 重载两运算符格式如下: istream & operator >> (istream &, 自定义类 &); ostream & operator 并且只能将其重载为友元函数,而不能作为自定义类的成员函数, 原因如下: 定义为成员函数,那么就隐含this指针了,你要
C++中那些运算符不能重载
C++中不能重载的运算符:“?:”、“.”、“::”、“sizeof”和”.*”
【c/c++】类型转换函数(类型转换运算符重载函数)
用转换构造函数可以将一个指定类型的数据转换为类的对象。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据)。 C++提供类型转换函数(type conversion function)来解决这个问题。类型转换函数的作用是将一个类的对象转换成另一类型的数据。如果已声明了一个Complex类,可以在Complex类中这样定义类型转换函数
C++ 下标运算符 重载
我们常用下标运算符operator[]来访问数组中的某个元素.它是一个双目运算符,第一个运算符是数组名,第二个运算符是数组下标.在类对象中,我们可以重载下标运算符,用它来定义相应对象的下标运算. 注意,C++不允许把下标运算符函数作为外部函数来定义,它只能是非静态的成员函数.下标运算符定义的一般形式:       T1T::operator[](T2); 其中,T是定义下标运算符的类,它不必
C++面向对象程序设计(谭浩强)阅读笔记3——关于运算符的重载
1.运算符重载:同一运算符赋予其新的运算意义。 2.运算符重载就是函数的重载,其一般格式如下:                             函数类型 operator 运算符名称(形参列表)                              { 对运算符的重载处理}; 3.重载运算符的规则: (1) C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行
怎样在C++中重载++运算符?
我们知道在C++中重载运算符是很方便的,尤其是类对象之间的运算尤为方便。但是在重载的运算符中有一个比较特殊,就是++和--运算符。 我们拿++运算符(重载用于类对象之间的运算)来说,这个是存在前++和后++的,我们怎么在使用时辨识这两个++呢?在重载时又要注意什么问题呢? 当我们重载一个运算符时,尽量不要失去原有的神韵,也就是说不要失去了原来的本意最好。于是我们先看看重载前的++运算符怎么使用
C++哪些运算符重载可以重载?
运算符重载是C++重要的特性之一,本文首先引用了C++标准文档对于“运算符重载”的规定,然后通过代码实例回答了:哪些运算符可以重载?如何重载?实现运算符重载时应注意哪些?
不能重载的运算符只有5个:
(2)C++允许重载的运算符 C++中绝大部分运算符都是可以被重载的。 不能重载的运算符只有5个: .             (成员访问运算符) .*            (成员指针访问运算符) ::             (域运算符) sizeof    (长度运算符) ?:            (条件运算符) 前两个运算符不能重载是为了保证访