递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。
下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。
递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。
下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。
递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。
下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。
递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。
下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。
递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。
下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。
递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。
下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。
- #include
- using namespace std;
-
- class Time
- {
- private:
- int hours; // 0 到 23
- int minutes; // 0 到 59
- public:
- // 所需的构造函数
- Time(){
- hours = 0;
- minutes = 0;
- }
- Time(int h, int m){
- hours = h;
- minutes = m;
- }
- // 显示时间的方法
- void displayTime()
- {
- cout << "H: " << hours << " M:" << minutes <
- }
- // 重载前缀递增运算符( ++ )
- Time operator++ ()
- {
- ++minutes; // 对象加 1
- if(minutes >= 60)
- {
- ++hours;
- minutes -= 60;
- }
- return Time(hours, minutes);
- }
- // 重载后缀递增运算符( ++ )
- Time operator++( int )
- {
- // 保存原始值
- Time T(hours, minutes);
- // 对象加 1
- ++minutes;
- if(minutes >= 60)
- {
- ++hours;
- minutes -= 60;
- }
- // 返回旧的原始值
- return T;
- }
- };
- int main()
- {
- Time T1(11, 59), T2(10,40);
-
- ++T1; // T1 加 1
- T1.displayTime(); // 显示 T1
- ++T1; // T1 再加 1
- T1.displayTime(); // 显示 T1
-
- T2++; // T2 加 1
- T2.displayTime(); // 显示 T2
- T2++; // T2 再加 1
- T2.displayTime(); // 显示 T2
- return 0;
- }
当上面的代码被编译和执行时,它会产生下列结果:
H: 12 M:0
H: 12 M:1
H: 10 M:41
H: 10 M:42
注意,int 在 括号内是为了向编译器说明这是一个后缀形式,而不是表示整数。
前缀形式重载调用 Check operator ++ () ,后缀形式重载调用 operator ++ (int)。
实例 (++ 重载)
- #include
- using namespace std;
-
- class Check
- {
- private:
- int i;
- public:
- Check(): i(0) { }
- Check operator ++ ()
- {
- Check temp;
- temp.i = ++i;
- return temp;
- }
-
- // 括号中插入 int 表示后缀
- Check operator ++ (int)
- {
- Check temp;
- temp.i = i++;
- return temp;
- }
-
- void Display()
- { cout << "i = "<< i <
- };
-
- int main()
- {
- Check obj, obj1;
- obj.Display();
- obj1.Display();
-
- // 调用运算符函数,然后将 obj 的值赋给 obj1
- obj1 = ++obj;
- obj.Display();
- obj1.Display();
-
- // 将 obj 赋值给 obj1, 然后再调用运算符函数
- obj1 = obj++;
- obj.Display();
- obj1.Display();
-
- return 0;
- }
执行输出结果为:
i = 0
i = 0
i = 1
i = 1
i = 2
i = 1
实例 (-- 重载)
- #include
- using namespace std;
-
- class Check
- {
- private:
- int i;
- public:
- Check(): i(3) { }
- Check operator -- ()
- {
- Check temp;
- temp.i = --i;
- return temp;
- }
-
- // 括号中插入 int 表示后缀
- Check operator -- (int)
- {
- Check temp;
- temp.i = i--;
- return temp;
- }
-
- void Display()
- { cout << "i = "<< i <
- };
-
- int main()
- {
- Check obj, obj1;
- obj.Display();
- obj1.Display();
-
- // 调用运算符函数,然后将 obj 的值赋给 obj1
- obj1 = --obj;
- obj.Display();
- obj1.Display();
-
- // 将 obj 赋值给 obj1, 然后再调用运算符函数
- obj1 = obj--;
- obj.Display();
- obj1.Display();
-
- return 0;
- }
执行输出结果为:
i = 3
i = 3
i = 2
i = 2
i = 1
i = 2
-
相关阅读:
Vector和ArrayList的扩容
518. 零钱兑换II(完全背包问题)
Excel 一列数据转换为多行数据
vector模拟实现——关于模拟中的易错点
思腾云计算
WINDOWS核心编程--Windows程序内部运行机制
linux:将进程切换到后台且不退出
python基础环境
零基础通信基础知识入门(4G/5G通信知识入门书籍)
课题学习(三)----倾角和方位角的动态测量方法(基于陀螺仪的测量系统)
-
原文地址:https://blog.csdn.net/DUXS11/article/details/126398335