c++中的operator 有两种用法,一种是(operator overloading)运算符重载,
一种是(operator casting)操作隐式转换
#include <iostream>
using namespace std;
class num
{
protected:
int m_a;
int m_b;
public:
num(int a, int b):m_a(a),m_b(b){}
num operator + (const num& n )
{
this->m_a += n.m_a;
this->m_b += n.m_b;
return *this;
}
operator bool()
{
if( this->m_a == 0 && this->m_b == 0 ) return false;
return true;
}
/*输入输出运算符只能定义成友元函数*/
friend ostream& operator << ( ostream& os, num& n );
};
ostream& operator << ( ostream& os, num& n )
{
os <<n.m_a <<"," <<n.m_b <<endl;
return os;
}
int _tmain(int argc, _TCHAR* argv[])
{
num a(1,2);
cout <<a;
num b(3,4);
cout <<b;
a = a + b;
cout <<a <<endl;
if(a)
{
cout << "a != 0" <<endl;
}
return 0;
}