码迷,mamicode.com
首页 > 其他好文 > 详细

MyInt的简单实现

时间:2015-03-11 14:21:22      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

#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; }

 

MyInt的简单实现

标签:

原文地址:http://www.cnblogs.com/gaoyanqing/p/4329592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!