ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【C++】双目运算符+=的重载(包含友元)

2021-09-15 22:03:06  阅读:169  来源: 互联网

标签:友元 int C++ 运算符 重载 Complex Test c1


文章目录

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;
};

 

标签:友元,int,C++,运算符,重载,Complex,Test,c1
来源: https://blog.csdn.net/weixin_43967449/article/details/120316582

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有