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

时间:2022-05-25 23:59:37

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

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

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

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

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

总结

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

原文链接:https://blog.csdn.net/weixin_43967449/article/details/120316582