C ++ 面向对象编程 运算符重载 双目
来源:互联网 发布:产品经理面试题目知乎 编辑:程序博客网 时间:2024/04/27 10:22
C ++ 面向对象编程
重载双目运算符为成员函数 假设有一个类A 对于书那个木运算符 op 表达式 obj1 op obj2 解释为 obj1.operator op(obj2)
左边的对象有this 指针传递, 右边的对象obj2 传递函数
看代码:
#include<iostream>#include<time.h>using namespace std;int day_tap[2][12] ={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};class date{ int year; int month ; int day ; public : date() {//默认构造函数 char time[10]; //时间的格式一般是MM/DD/YY //这里使用_strdate函数来获得计算机的日期 _strdate(time); month = (time[0] -'0')*10 + time[1] -'0'; day = (time[3] -'0')*10 +time[4] -'0'; year = 2000 + (time[6] -'0')*10 + time[7]-'0'; } //重载构造函数 date(int y1, int m1, int d1) { year = y1; month = m1; day = d1; } void dispdate() { cout<<year<<"."<<month<<"."<<day<<endl; } int operator-(date d1) { //重载运算符函数 return (dton(*this)- dton(d1)); } int leap(int y) { return (y%4 == 0 && y%100 != 0)|| (y%400 == 0); //闰年能被4整除但是不能被100 整除, 或者说能被400整除 } int dton(date &d) { int y1, m1, day1= 0; for(y1= 0 ; y1 <= d.year; y1++) { if(leap(y1)) { day1+= 366; } else { day1 += 365; } } for(m1 = 0; m1 < d.month; m1++) { if(leap(d.year)) { day1 +=day_tap[1][m1]; } else day1+=day_tap[0][m1]; } day1+= d.day; return day1; }};int main(){ date date1(2007,11,11), date2; cout<<"当期日期:"<<endl; date2.dispdate(); cout<<"以前日期:"<<endl; date1.dispdate(); cout<<"相距离天数:"<<endl; cout<<date2 -date1<<endl; return 0;}
0 1
- C ++ 面向对象编程 运算符重载 双目
- C++面向对象编程 运算符重载
- 双目运算符重载
- 重载双目运算符
- 双目运算符重载
- 双目运算符重载
- 双目运算符的重载
- 双目运算符的重载
- C++双目运算符重载
- 10.3 重载双目运算符
- C++面向对象编程(五)之 运算符重载
- C++:运算符重载2(双目:复数的减法)
- C#——面向对象——重载操作符——重载运算符
- 面向对象----C#运算符重载
- 面向对象——运算符重载
- C++入门 (十) 重载双目运算符
- 运算符重载加法(双目)
- C++之双目运算符重载
- QUnit在浏览器扩展API测试中的应用
- Jquery.datatables 学习笔记
- 规避丑陋的eval
- 为什么我的线程数越多计算时间反而慢了呢
- sqlplus 中查看oracle触发器的 dbms_output.put_line 输出值
- C ++ 面向对象编程 运算符重载 双目
- Hadoop大数据零基础高端实战培训
- Route flags in FreeBSD and Linux
- 对 《windows程序设计 第5版》第11章对话框ABOUT2程序的理解
- 创建自己的pk8, x509.pem并给app签名
- webview通过js调用android方法
- 拉登/Radon变换
- nyoj题目599:奋斗的小蜗牛
- 机器学习相关——协同过滤