使用 全局函数 实现 前置 ++ 自增运算符重载 :
operate++
;operate++
operate+(const Student& s1)
operate+(Student& s1, Student& s2)
\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;
};
使用 全局函数 实现 前置 - - 自减运算符重载 :
operate--
;operate--
operate+(const Student& s1)
operate+(Student& s1, Student& s2)
\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
请按任意键继续. . .