运算符重载

原创 2016年08月29日 11:03:30

c++ 中 * 重载

1,运算符重载函数作为类成员函数:

#include <iostream>

using namespace std;
class complex1{
public:
complex1(){real=0;imag=0;}
complex1(int r,int i);
void display();
complex1 operator*(complex1 &c);

private:
int real;
int imag;
};
complex1::complex1(int r,int i){
real=r;
imag=i;
}
void complex1::display(){
if(imag<0) cout<<real<<imag<<"i"<<endl;
else cout<<real<<"+"<<imag<<"i"<<endl;
}
complex1 complex1::operator*(complex1 &c){
     complex1 c1;
c1.real=real*c.real-imag*c.imag;
c1.imag=real*c.imag+imag*c.real;
return c1;
}
int main(){
complex1 c1(3,5),c2(7,8),c;
c=c1*c2;
c.display();
return 0;

}


2,运算符重载函数作为友元函数
#include <iostream>
using namespace std;
class complex1{
public:
complex1(){real=0;imag=0;}
complex1(int r,int i);
void display();
friend complex1 operator*(complex1 c1,complex1 c2);

private:
int real;
int imag;
};
complex1::complex1(int r,int i){
real=r;
imag=i;
}
void complex1::display(){
if(imag<0) cout<<real<<imag<<"i"<<endl;
else cout<<real<<"+"<<imag<<"i"<<endl;
}
 complex1 operator*(complex1 c1,complex1 c2){
     complex1 c;
c.real=c1.real*c2.real-c1.imag*c2.imag;
c.imag=c1.real*c2.imag+c1.imag*c2.real;
return c;
}
int main(){
complex1 c1(3,5),c2(7,8),c;
c=c1*c2;
c.display();
return 0;
}


才知道java竟然没有运算符重载

写复数类的乘法和除法真的是要写死人了。。。public class Complex { private Fraction realPart; private Fraction image...
  • liaotl10
  • liaotl10
  • 2017年07月11日 22:16
  • 871

c加加+-*/前置++后置++运算符重载

运算符重载注意点: 1.算术和关系操作符返回的是一个左值或右值,而不是一个引用 2.赋值操作符一定要定义为成员函数如“=” 3.一般而言,赋值操作符和复合赋值操作符应返回左操作数的引用如"="和''+...
  • littleprince1
  • littleprince1
  • 2017年04月18日 16:46
  • 816

类的运算符重载

类的运算符重载 参考书籍 :C++ 世界的两本世界名著 [C++ 程序设计语言 ] 和 [C++primer]重载知识点 1. 重载运算符 1.1 引言 1.2 限定及重载语法 1.2.1 限定 1....
  • smy0816
  • smy0816
  • 2011年05月06日 19:15
  • 3734

运算符重载(一般、关系、逻辑、单目、箭头操作符)

c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,...
  • duzejie
  • duzejie
  • 2016年10月07日 18:23
  • 981

关于运算符重载的两种方式的优缺点比较

大家都知道一般常用两种重载运算符的方式分别是: 1.作为成员函数重载运算符.    2.作为友元函数重载运算符. 这里我给个例子. 这里是DoubleA class DoubleA { publi...
  • y1196645376
  • y1196645376
  • 2016年03月31日 17:06
  • 2927

C++_运算符重载_前缀自增与后缀自增

由于前缀自增与后缀自增在如果通过运算符重载在形式上相同,都为 以Date类为例 Date& operator++(Date &)(全局函数)/ Date& operator++( )(成员函数)无法区...
  • u010003835
  • u010003835
  • 2015年08月06日 18:16
  • 2765

C++基础篇--运算符重载

运算符重载没有多高深复杂,但牵扯到的相关概念和语法变化不少,如果这块基石不牢固,读复杂C++代码时就只有雾里看花的份。 运算符重载由来     C/C++中所有运算符(+-*/等)默认只用于基本数据类...
  • ipmux
  • ipmux
  • 2015年09月01日 15:04
  • 988

关于c++的运算符重载那些事

搞c++有一段时间了,今天突然要重载一个运算符,发现自己有点忘了,遂查查资料做一下c++运算符重载的小总结。 一、何为运算符重载 运算符的重载是c++语言特有的,java什么的是没有运算符重载的,所以...
  • uestclr
  • uestclr
  • 2016年04月16日 21:59
  • 3281

C++实践参考——分数类中的运算符重载

【项目1-分数类中的运算符重载】   (1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。class CFraction { private: ...
  • sxhelijian
  • sxhelijian
  • 2016年05月19日 21:44
  • 3256

LintCode-赋值运算符重载

实现赋值运算符重载函数,确保: 新的数据可准确地被复制旧的数据可准确地删除/释放可进行 A = B = C 赋值 样例 如果进行 A = B 赋值,则 A 中的数据被删除,取而代...
  • wangyuquanliuli
  • wangyuquanliuli
  • 2015年05月21日 18:14
  • 1858
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:运算符重载
举报原因:
原因补充:

(最多只允许输入30个字)