C++_运算符重载_前缀自增与后缀自增
来源:互联网 发布:安卓软件限速 编辑:程序博客网 时间:2024/05/18 12:00
由于前缀自增与后缀自增在如果通过运算符重载在形式上相同,都为
以Date类为例 Date& operator++(Date &)(全局函数)/ Date& operator++( )(成员函数)无法区分。
故人为规定前缀自增与后缀自增运算符的表达形式:
由于编译器必须能够识别出前缀自增与后缀自增,故人为规定了用一个 int 区分,并没有实际的含义。
前缀自增示例
Calendar& Calendar::operator++(){tick();return *this;}
后缀自增示例
Calendar Calendar::operator++(int){Calendar temp = *this;tick();return temp;/*tick();return *this;*/}
上面会出现3次析构,Temp会导致一次析构。
下面只有两次析构,并没有保存传进来的副本
头文件
#ifndef CALENDAR#define CALENDAR#include <iostream>#include <cstdio>#include <iomanip>#include <windows.h>using namespace std;class Calendar;ostream &operator<<(ostream & output, Calendar &C);class Calendar{friend ostream &operator<<(ostream & output, Calendar &C);public:Calendar(int y = 2015, int m = 8, int d = 6, int h = 17, int mm = 9, int s = 0):year(y), month(m), day(d), hour(h), minute(mm), second(s){}//operator Calendar &operator++();Calendar operator++(int);void tick(){++second;}~Calendar(){cout << "Destructor" << endl;}private:int day;int month;int year;int hour;int minute;int second;FILE *fp;};Calendar& Calendar::operator++(){tick();return *this;}Calendar Calendar::operator++(int){Calendar temp = *this;tick();return temp;/*tick();return *this;*/}ostream &operator<<(ostream & output, Calendar &C){output << ""<< setw(15) << "Year: " << C.year << " "<< setw(15) << "Month: " << C.month << " "<< setw(15) << "Day: " << C.day << " " << endl<< setw(15) << "Hour: " << C.hour << " "<< setw(15) << "Minute: " << C.minute << " "<< setw(15) << "Second: " << C.second << " " << endl;return output;}#endif
int main(){Calendar a;cout << a << endl;cout << ++a << endl;cout << a++ << endl;cout << a << endl;return 0;}
0 0
- C++_运算符重载_前缀自增与后缀自增
- 关于前缀自增运算符与后缀自增运算符的区别,以及利弊
- 自增、自减运算符的前缀和后缀
- 重载前缀和后缀自增操作符
- C++前缀自增/后缀自增及重载
- C++之自增、自减运算符的前缀、后缀运算符区别(5)---《More Effective C++》
- 后缀自增/自减运算符与前缀自增/自减运算符的使用区别(即i++与++i)
- 自增(++)/自减(--)运算符的前缀和后缀
- 自增、自减运算符的前缀和后缀形式区别
- 自增自减运算符重载
- 重载自增,自减运算符
- 自增运算符重载
- 自增运算符重载
- 自增运算符重载
- 自增(increment)、自减(decrement)操作符前缀形式与后缀形式的区别
- 自增(increment)、自减(decrement)操作符前缀形式与后缀形式的区别
- 3.自增自减操作符前缀形式与后缀形式的区别
- C++ 自增、自减操作符前缀与后缀的区别
- HashMap存储原理以及与hashcode、equals方法的关系
- Study-android 的handler和message学习
- Server redirected too many times
- 关于JSP的Cookie的入门学习,以及部分代码的备注解释
- log4j一直报错,log4j:WARN No appenders could be found for logger,解决方法
- C++_运算符重载_前缀自增与后缀自增
- 三分钟get13个神级邮件营销技巧!
- 免费且超级好用的搜索引擎INSO
- jquery is用法
- SQL查询的时候可自带循环
- 使用memcpy移动数据位置的思考
- 对linux设备驱动中的并发控制相关内容的理解
- G - MZL's simple problem-HDU 5349 -模拟multiset
- hdoj-1593-find a way to escape【数学题】