标签:
#include <iostream> using namespace std; class CMyInt{ private: int value; public: CMyInt(int x):value(x){} CMyInt():value(0){} //++i CMyInt & operator++(){ value ++; return *this; } //i++ CMyInt operator++(int){ CMyInt temp = *this; ++(*this); return temp; } CMyInt & operator=(const CMyInt & B){ if(this != &B) this->value = B.value; return *this; } int getInt(){ return value; } // operator int() const{ //与上面的隐式转换重叠,在混合运算中将出现歧义;如果需要转int,可以定义一个接口,即getInt() // return value; //} friend ostream & operator <<( ostream & , const CMyInt & ); friend CMyInt operator + (const CMyInt & A, const CMyInt & B); }; ostream & operator <<( ostream & out, const CMyInt & myint){ out << myint.value; return out; } CMyInt operator + (const CMyInt & A, const CMyInt & B){ return CMyInt(A.value + B.value); } int main() { CMyInt myint(0),inta(2),intb(2); int x,y; cout << (myint++) + (myint++)<<endl; //print 1 cout << myint <<endl; //print 2
// 比较与内置后++有什么区别 int a=0; cout << (a ++ + a++ ) <<endl; //print 0 cout << a <<endl; //print 2 x=myint.getInt(); myint = inta + intb + x; cout << myint <<endl; //6 //y=myint;// 非法 y=myint.getInt(); //合法; cout << y <<endl; // print 6 myint= y =(inta + x + intb).getInt(); //连续赋值 cout << myint << " " << y <<endl; }
标签:
原文地址:http://www.cnblogs.com/gaoyanqing/p/4329592.html