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

编辑: admin 分类: c#语言 发布时间: 2021-12-12 来源:互联网
目录
  • 1、+=重载
  • 2、friend重载+=
  • 3、运算符
    • 3.1 单目运算符
    • 3.2 双目运算符
    • 3.3 三目运算符
  • 4、重载++和重载- -
    • 总结

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

      总结

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

      【文章出处http://www.nextecloud.cn/kt.html欢迎转载】