MyInt的简单实现

#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; }
原文地址:https://www.cnblogs.com/gaoyanqing/p/4329592.html