递增运算符( ++ )和递减运算符( -- )是 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
-
相关阅读:
IIS 部署 SSL 证书提示证书链中的一个或多个中间证书丢失
网络字节序和主机字节序
【深入理解C++】new/delete和new[]/delete[]探秘
SQL批量处理+JDBC操作大数据及工具类的封装
java计算机毕业设计基于springboo+vue的电脑城销售系统
ACM第三周---周训---题目合集.
ADC驱动怎么应用以及中断顶半部和底半部
再见了青春,联想Y450最后一次升级,真的神一般存在。
3主3从redis集群扩缩容配置案例说明
Spring 6.x 的 AoT 相关支持的注解
-
原文地址:https://blog.csdn.net/DUXS11/article/details/126398335
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU