C++ 运算符重载解析

C++运算符重载

C++的运算符重载其实就是定义一个函数,让运算符具有不同的功能。 在用到该运算符时,编译器会自动调用这个函数。也就是说,运算符重载是通过函数来实现的,本质上是函数重载(参数发生变化)。

运算符重载
返回值类型 operator运算符名称(参数列表){
}

运算符重载除了函数名有特定的格式外,和其他普通函数没有什么区别。

  1. 在类中定义运算符重载
  2. 在全局定义运算符重载、

在类中定义运算符重载:

#inculde<iostream>
using namespace std;

class complex{
public:
	complex();
	complex(double real,double image); 
public:
	comlplex operator+(const complex &A) const;
private:
	double m_real;
	double m_image;
};	
complex::complex():m_real(0.0),m_image(0.0){}
complex::complex(double real,double image):m_real(real),

#重载运算符
complex complex::operator+(const complex &A) const{
	complex B;
	B.m_real = this->m_real+A.m_real;
	B.m_image = this->m_image+A.m_image;
	return B;
	}
int main(){
	complex c1(2.3,3.1);
	complex c2(3.1,3.5);
	complex c3;
	c3 = c1+c2;

说明:const表示这是一个const成员函数,也叫常成员函数,常成员函数需要在声明和定义的时候在函数头部的尾部同时加上const。

c3 = c1 + c2 这句的意思就是:
c3 = c1.operator+(c2)

全局重载运算符:

#include <iostream>
using namespace std;
class complex{
public:    
	complex();    
	complex(double real, double imag);
public:    
	void display() const;    
	//声明为友元函数    
	frend complex operator+(const complex &A,const complex &B);
private:    
	double m_real;    double m_imag;
};
complex operator+(const complex&A,const complex&B);

complex operator+(const complex &A, const complex &B)
{
	complex C;
	C.m_real = A.m_real + B.m_real;
	C.m_image = A.m_image + B.m_image;
	return C;
}

运算符重载函数不是 complex 类的成员函数,但是却用到了 complex 类的 private 成员变量,所以必须在 complex 类中将该函数声明为友元函数。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值