C++双目运算符+=的重载详解
2026/7/5 8:53:27 网站建设 项目流程

1、+=重载

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

classComplex

{

public:

Complex(inta,intb)

: _a(a)

, _b(b)

{}

Complex& operator+= (Complex& other)

{

this->_a += other._a;

this->_b += other._b;

return*this;

}

voidprint()

{

cout << _a << endl;

cout << _b << endl;

}

private:

int_a;

int_b;

};

voidTestLei()

{

inta = 10, b = 20, c = 30;

Complex c1(10, 20);

Complex c2(20, 30);

Complex c3(30, 40);

c1 += c2 += c3;

c1.print();

}

2、friend重载+=

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

classComplex

{

public:

Complex(inta,intb)

: _a(a)

, _b(b)

{}

friendComplex& operator+= (Complex& c1, Complex& c2)

{

c1._a += c2._a;

c1._b += c2._b;

returnc1;

}

voidprint()

{

cout << _a << endl;

cout << _b << endl;

}

private:

int_a;

int_b;

};

voidTestFriend()

{

inta = 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 三目运算符

对三个变量进行操作;

1

b ? x : y

4、重载++和重载- -

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

classTest

{

public:

Test(intt = 0)

:_t(t)

{}

Test& operator++()// 前置++

{

++_t;

return*this;

}

Test operator++(int)// 后置++

{

Test temp = *this;

++_t;

returntemp;

}

Test& operator--()// 前置--

{

--_t;

return*this;

}

Test operator--(int)// 后置--

{

Test temp = *this;

--_t;

returntemp;

}

intResult()

{

return_t;

}

private:

int_t;

};

总结

本篇文章就到这里了,希望能够给你带来帮助


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询