C++双目运算符+=的重载详解

 更新时间:2021年09月16日 15:00:58   作者:C++双目运算符+=的重载  
这篇文章主要介绍了详解C++编程中的双目运算符重载,是C++入门学习中的基础知识,需要的朋友可以参考下,希望能够给你带来帮助

1、+=重载

class Complex
{
public:
	Complex(int a, int b)
		: _a(a)
		, _b(b)
	{}
	Complex& operator+= (Complex& other)
	{
		this->_a += other._a;
		this->_b += other._b;
		return *this;
	}
	void print()
	{
		cout << _a << endl;
		cout << _b << endl;
	}
private:
	int _a;
	int _b;
};
void TestLei()
{
	int a = 10, b = 20, c = 30;
	Complex c1(10, 20);
	Complex c2(20, 30);
	Complex c3(30, 40);
	c1 += c2 += c3;
	c1.print();
}

在这里插入图片描述

2、friend重载+=

class Complex
{
public:
	Complex(int a, int b)
		: _a(a)
		, _b(b)
	{}
	friend Complex& operator+= (Complex& c1, Complex& c2)
	{
		c1._a += c2._a;
		c1._b += c2._b;
		return c1;
	}
	void print()
	{
		cout << _a << endl;
		cout << _b << endl;
	}
private:
	int _a;
	int _b;
};
void TestFriend()
{
	int a = 10, b = 20, c = 30;
	Complex c1(10, 20);
	Complex c2(20, 30);
	Complex c3(30, 40);
	c1 += c2 += c3;
	c1.print();
}

在这里插入图片描述

3、运算符

3.1 单目运算符

单目运算符是指运算所需变量为一个的运算符。

逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++,–】、负号运算符【-】

类型转换运算符【(类型)】、指针运算符和取地址运算符【*和&】、长度运算符【sizeof】

3.2 双目运算符

双目运算符就是对两个变量进行操作。

初等运算符

下标运算符【[]】、分量运算符的指向结构体成员运算符【->】、结构体成员运算符【.】 算术运算符
乘法运算符【*】、除法运算符【/】、取余运算符【%】 、加法运算符【+】、减法运算符【-】

关系运算符

等于运算符【==】、不等于运算符【!=】 、关系运算符【< > <=> = 】
逻辑与运算符【&&】、逻辑或运算符【||】、逻辑非运算符【!】

位运算符

按位与运算符【&】、按位异或运算符【^】 、按位或运算符【|】、左移动运算符【<<】、右移动运算符【>>】

赋值运算符 赋值运算符【= += -= *= /= %= >>= <<= &= |= ^=】 逗号运算符 【,】

3.3 三目运算符

对三个变量进行操作;

b ? x : y

4、重载++和重载- -

class Test
{
public:
	Test(int t = 0)
		:_t(t)
	{}
	Test& operator++() // 前置++
	{
		++_t;
		return *this;
	}
	Test operator++(int)// 后置++
	{
		Test temp = *this; 
		++_t;
		return temp;
	}
	Test& operator--()// 前置--
	{
		--_t;
		return *this;
	}
	Test operator--(int)// 后置--
	{
		Test temp = *this;
		--_t;
		return temp;
	}
	int Result()
	{
		return _t;
	}
private:
	int _t;
};

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • C++ 位运算的具体实现

    C++ 位运算的具体实现

    位运算直接对内存数据进行操作,不需要转换成十进制,因此处理速度非常快,本文主要介绍了C++ 位运算的具体实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • C语言编程之预处理过程与define及条件编译

    C语言编程之预处理过程与define及条件编译

    这篇文章主要为大家介绍了C语言编程之预处理过程与define及条件编译,文中通过图文及示例代码方式作了详细的解释,有需要的朋友可以借鉴参考下
    2021-09-09
  • C语言中动态内存管理图文详解

    C语言中动态内存管理图文详解

    在编写程序时,通常并不知道需要处理的数据量,或者难以评估所需处理数据量的变动程度,下面这篇文章主要给大家介绍了关于C语言中动态内存管理的相关资料,需要的朋友可以参考下
    2022-06-06
  • C语言实现BMP图像闭运算处理

    C语言实现BMP图像闭运算处理

    这篇文章主要为大家详细介绍了C语言实现BMP图像闭运算处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • vs2019 MFC实现office界面的画图小项目

    vs2019 MFC实现office界面的画图小项目

    本文主要介绍了vs2019 MFC实现office界面的画图小项目,对大家入门有一定的帮助,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • C++11中移动构造函数案例代码

    C++11中移动构造函数案例代码

    C++11 标准中为了满足用户使用左值初始化同类对象时也通过移动构造函数完成的需求,新引入了 std::move() 函数,它可以将左值强制转换成对应的右值,由此便可以使用移动构造函数,对C++11移动构造函数相关知识感兴趣的朋友一起看看吧
    2023-01-01
  • C++对象与继承使用中一些问题介绍

    C++对象与继承使用中一些问题介绍

    大家好,本篇文章主要讲的是C++对象与继承使用中一些问题介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • 基于QT5实现一个时钟桌面

    基于QT5实现一个时钟桌面

    这篇文章主要介绍了利用QT5实现的一个时钟桌面,文中的示例代码讲解详细,对我们学习或工作有一定的帮助,感兴趣的小伙伴可以了解一下
    2022-01-01
  • QT中大部分部件如何使用举例详解

    QT中大部分部件如何使用举例详解

    QWidget类是所有用户界面对象的基类,被称为基础窗口部件,下面这篇文章主要给大家介绍了关于QT中大部分部件如何使用的相关资料,需要的朋友可以参考下
    2022-06-06
  • 浅析C++中前置声明的应用与陷阱

    浅析C++中前置声明的应用与陷阱

    以下是对C++中前置声明的应用与陷阱进行了详细的分析介绍,需要的朋友参考下
    2013-07-07

最新评论