(一)不可重载的运算符

在这里插入图片描述

(二)运算符重载语法

  • 函数名:类型 operator运算符(){}

(三)重载++

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
36
37
38
39
#include <iostream>
using namespace std;

class Int
{
int val;
public:
Int() :val(0) {}
Int(int value)
{
val = value;
}

//缺省拷贝构造
Int(const Int& src):val(src.val){}
//缺省的赋值运算符重载
Int& operator=(const Int& src)
{
if(this != &src)
{
val = src.val;
return *this;
}
}
//前置++
Int& operator++()
{
val++;
return *this;
}
//后置++
Int operator++(int)
{
Int tmp = *this;
++* this; //从右向左结合
return tmp;
//return Int(val++); //匿名对象
}
};

(四)重载+

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
	//对象 = 对象 + 对象
Int operator+(const Int& right)const
{
return Int(val + right.val);
}


//对象 = 对象 + 常量
Int operator+(const int value)const
{
return Int(val + value);
}

};
//对象 = 常量 + 对象
Int operator+(const int value, const Int& right)
{
//使用对象+常量重载
return right + value;
}