运算符重载
//位操作运算符
& | ~ ^ << >>
//逻辑运算符
! && ||
#include <iostream>
#include <stdio.h>
using namespace std;
class Interger{
public:
Interger(const int i = 10):val(i){}
Interger(const Interger &obj){
val = obj.val;
}
~Interger(){}
public:
int getval(){
return val;
}
friend bool operator&(const Interger &a, const Interger &b);
friend bool operator|(const Interger &a, const Interger &b);
friend Interger operator~(const Interger &obj);
friend bool operator^(const Interger &a, const Interger &b);
friend Interger operator<<(const Interger &obj, const int len);
friend Interger operator>>(const Interger &obj, const int len);
friend bool operator&&(const Interger &a, const Interger &b);
friend bool operator||(const Interger &a, const Interger &b);
friend bool operator!(const Interger &a);
private:
int val;
};
Interger operator<<(const Interger &obj, const int len)
{
Interger tmp(obj.val<<len);
return tmp;
}
Interger operator>>(const Interger &obj, const int len)
{
Interger tmp(obj.val>>len);
return tmp;
}
bool operator&(const Interger &a, const Interger &b)
{
if(a.val & b.val){
return true;
}
else
return false;
}
bool operator&&(const Interger &a, const Interger &b)
{
if(a.val && b.val){
return true;
}
else
return false;
}
bool operator|(const Interger &a, const Interger &b)
{
if(a.val | b.val){
return true;
}
else
return false;
}
bool operator||(const Interger &a, const Interger &b)
{
if(a.val || b.val){
return true;
}
else
return false;
}
bool operator!(const Interger &a)
{
if(a.val){
return false;
}
else
return true;
}
bool operator^(const Interger &a, const Interger &b)
{
if(a.val == b.val)
return false;
else
return true;
}
Interger operator~(const Interger &obj)
{
Interger tmp(~obj.val);
return tmp;
}
int main()
{
Interger a(10);
Interger b(5);
cout << "a.val = " << a.getval() << endl;
cout << "b.val = " << b.getval() << endl;
printf("a&b = %x\n", a&b);
printf("a&&b = %x\n", a&&b);
printf("a|b = %x\n", a|b);
printf("a||b = %x\n", a||b);
printf("!b = %x\n", !b);
printf("a^b = %x\n", a^b);
Interger c = ~a;
cout << "~a = " << c.getval() << endl;
Interger d = a<<2;
cout << "a<<len = " << d.getval() << endl;
Interger e = a>>2;
cout << "a >> len = " << e.getval() << endl;
return 0;
}