文章目录
- 一、一元运算符重载
 - 1、使用 成员函数 实现 前置 ++ 自增运算符重载
 - 2、使用 成员函数 实现 前置 - - 自减运算符重载
 
- 二、完整代码示例
 
一、一元运算符重载
1、使用 成员函数 实现 前置 ++ 自增运算符重载
使用 全局函数 实现 前置 ++ 自增运算符重载 :
- 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载的运算符 , 函数名是 
operate++; 
operate++
 
- 然后 , 根据操作数 写出函数参数 , 参数一般都是 对象的引用 ;  
  
- 成员函数 : 参数是  
        
         
          
          
            1 
           
          
         
           1 
          
         
       1 个对象的常量引用 , 如 : 
operate+(const Student& s1) - 全局函数 : 参数是  
        
         
          
          
            2 
           
          
         
           2 
          
         
       2 个对象的引用 , 如 : 
operate+(Student& s1, Student& s2)\ - 此处由于是一元运算符重载 , 只需要对本对象进行操作 , 因此没有参数 ;
 
 - 成员函数 : 参数是  
        
         
          
          
            1 
           
          
         
           1 
          
         
       1 个对象的常量引用 , 如 : 
 
operator++()
 
- 再后 , 根据业务完善返回值 , 返回值可以是 引用 / 指针 / 元素 , 如 : 返回值是元素 
Student operate+(Student& s1, Student& s2); 此处 , 由于 参数中的 Student& s 中的属性发生了变化 , 返回时仍需要返回 Student& s 参数本身 , 因此返回值是 Student& 引用类型 ; 
Student& operator++()
 
- 最后 , 实现函数体 , 编写具体的运算符操作业务逻辑 ;
 
	// 使用 成员函数 实现 前置 ++ 自增运算符重载
	// 重载 前置 ++ 运算符
	// 实现 1 个 Student 对象 自增运算
	// 由于 参数中的 Student& s 中的属性发生了变化 
	// 返回时仍需要返回 Student& s 参数本身
	Student& operator++()
	{
		this->age++;
		this->height++;
		// 此处返回引用类型 , 需要对 this 指针进行解包
		return *this;
	};
 
2、使用 成员函数 实现 前置 - - 自减运算符重载
使用 全局函数 实现 前置 - - 自减运算符重载 :
- 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载的运算符 , 函数名是 
operate--; 
operate--
 
- 然后 , 根据操作数 写出函数参数 , 参数一般都是 对象的引用 ;  
  
- 成员函数 : 参数是  
        
         
          
          
            1 
           
          
         
           1 
          
         
       1 个对象的常量引用 , 如 : 
operate+(const Student& s1) - 全局函数 : 参数是  
        
         
          
          
            2 
           
          
         
           2 
          
         
       2 个对象的引用 , 如 : 
operate+(Student& s1, Student& s2)\ - 此处由于是一元运算符重载 , 只需要对本对象进行操作 , 因此没有参数 ;
 
 - 成员函数 : 参数是  
        
         
          
          
            1 
           
          
         
           1 
          
         
       1 个对象的常量引用 , 如 : 
 
operator--()
 
- 再后 , 根据业务完善返回值 , 返回值可以是 引用 / 指针 / 元素 , 如 : 返回值是元素 
Student operate+(Student& s1, Student& s2); 此处 , 由于 参数中的 Student& s 中的属性发生了变化 , 返回时仍需要返回 Student& s 参数本身 , 因此返回值是 Student& 引用类型 ; 
Student& operator--()
 
- 最后 , 实现函数体 , 编写具体的运算符操作业务逻辑 ;
 
	// 使用 成员函数 实现 前置 -- 自减运算符重载
	// 重载 前置 -- 运算符
	// 实现 1 个 Student 对象 自增运算
	// 由于 参数中的 Student& s 中的属性发生了变化 
	// 返回时仍需要返回 Student& s 参数本身
	Student& operator--()
	{
		this->age--;
		this->height--;
		// 此处返回引用类型 , 需要对 this 指针进行解包
		return *this;
	};
 
二、完整代码示例
代码示例 :
#include "iostream"
using namespace std;
class Student
{
public:
	// 带参构造函数 , 为参数设置默认值
	Student(int age = 1, int height = 1)
	{
		this->age = age;
		this->height = height;
	};
public:
	// 打印类数据
	void print()
	{
		cout << "age = " << age << " , height = " << height << endl;
	};
public:
	// 使用 成员函数 实现 前置 ++ 自增运算符重载
	// 重载 前置 ++ 运算符
	// 实现 1 个 Student 对象 自增运算
	// 由于 参数中的 Student& s 中的属性发生了变化 
	// 返回时仍需要返回 Student& s 参数本身
	Student& operator++()
	{
		this->age++;
		this->height++;
		// 此处返回引用类型 , 需要对 this 指针进行解包
		return *this;
	};
	// 使用 成员函数 实现 前置 -- 自减运算符重载
	// 重载 前置 -- 运算符
	// 实现 1 个 Student 对象 自增运算
	// 由于 参数中的 Student& s 中的属性发生了变化 
	// 返回时仍需要返回 Student& s 参数本身
	Student& operator--()
	{
		this->age--;
		this->height--;
		// 此处返回引用类型 , 需要对 this 指针进行解包
		return *this;
	};
private:
	int age;		// 年龄
	int height;		// 身高
};
int main() {
	// 自定义类型相加
	Student s1(10, 120), s2(18, 170);
	Student s3, s4, s5;
	++s1;
	s1.print();
	--s1;
	s1.print();
    // 控制台暂停 , 按任意键继续向后执行
    system("pause");
    return 0;
};
 
执行结果 :
age = 11 , height = 121
age = 10 , height = 120
请按任意键继续. . .
 



















