
WeekDays.h
using namespace std;enum DAYS{ MON,TUE,WED,THU,FRY,SAT,SUN};DAYS operator+(DAYS&a,DAYS &b){ printf("Binary+ called\n"); return (DAYS)(((unsigned int)a+(unsigned int)b)%7);}//Increment 3DAYS operator+(DAYS&a){ printf("Unary+ called\n"); return (DAYS)(((unsigned int)a+3)%7);}ostream& operator<<(ostream&o,DAYS &a){ switch(a){ case MON: o<<"MON"; break; case TUE: o<<"TUE"; break; case WED: o<<"WED"; break; case THU: o<<"THU"; break; case FRY: o<<"FRY"; break; case SAT: o<<"SAT"; break; case SUN: o<<"SUN"; break; } return o;}; Main.cpp的
#include <iostream>#include "WeekDays.h"using namespace std;voID main(){ DAYS a=MON; //=0 DAYS b=TUE; //=1 cout<< +a <<endl; cout<< +b <<endl; cout<< +(a,b) <<endl; cout<< (a+b) <<endl; cin.get();} 输出是
Unary+ called3Unary+ called4Unary+ called4Binary+ called1
为什么(a,b)被评估为一元运算符b?我没有解释这一点.
链接到相关主题Operator overloading.
我正在使用VisualStudio 2012.
您可以通过将其拼写为运算符(a,b)来调用运算符. (这里的逗号是参数的分隔符,而不是逗号运算符).
总结以上是内存溢出为你收集整理的C运算符重载称为函数全部内容,希望文章能够帮你解决C运算符重载称为函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)