栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++学习 5 | 操作符重载

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++学习 5 | 操作符重载

  • 什么是操作符重载
  • 方式一:成员函数的方式重载
  • 方式二:全局函数的方式重载


什么是操作符重载

C++ 里面操作符就是一种函数,而用户可以重定义或重载 C++ 内置的运算符。例如,实现两个复数相加的功能需要实部、虚部分别相加。

//语法:
返回值类型 operator op (参数);

//示例:
returnType operator+=(const type& a, const type& b);

方式一:成员函数的方式重载

编译器中,所有的成员函数都带有一个隐藏的参数 this,谁调用该函数,谁就是 this。
在执行c2 += c1时,操作符 += 作用于 c2,而 c1 是参数。

class complex
{
public:
	complex(double r=0, double i=0): re(r), im(i){}
	
	//返回引用是因为,可能存在(c3 += c2 += c1;)的用法
	complex& complex::operator+= (const complex& r)
	{
		//this指的是调用+=的对象,即c2,即 c2->re += r.re
		this->re += r.re;
		this->im += r.im;
		return *this;
	}
	double real() const {return re;}
	double imag() const {return im;}
private:
	double re, im;
}

//创建对象,将复数c1与c2相加的结果保存在c2中
{
	complex c1(2, 1);
	complex c2(5, 6);
	c2 += c1;
}

方式二:全局函数的方式重载

例子:操作符 <<,并且 << 只能以全局函数的形式重载。
cout 是 ostream 对象。

#include 
//第一个参数os不能加 const(★★★★★)
ostream& operator<<(ostream& os, const complex& x)
{
	return os << '(' << x.real() << ',' << x.imag() << ')';
}
{
	complex c1(2, 1);
	complex c2(5, 6);
	cout << c1 << c2;	//结果:(2,1)(5,6)
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352807.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号