首页 > C++编程 > 前置后置自增自减操作符重载

前置后置自增自减操作符重载

//前置/后置/自增/自减操作符重载
//Coded By 代码疯子
//http://www.programlife.net/
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
using namespace std;

class Int
{
	friend ostream& operator<<(ostream& os, const Int& i);
	friend istream& operator>>(istream& is, Int& i);
	friend bool operator<(const Int& a, const Int& b);
private:
	int value;
public:
	Int():value(0){}
	Int(int val):value(val){}
	Int(const Int& i):value(i.value){}
	Int& operator=(const Int& i)
	{
		value = i.value;
		return *this;
	}
	//前置操作符重载
	Int& operator++()
	{
		++value;
		return *this;
	}
	Int& operator--()
	{
		--value;
		return *this;
	}
	//后置操作符重载
	Int operator++(int)
	{
		Int ret(*this);
		++value;
		return ret;
	}
	Int operator--(int)
	{
		Int ret(*this);
		--value;
		return ret;
	}
};

ostream& operator<<(ostream& os, const Int& i)
{
	os << i.value;
	return os;
}

istream& operator>>(istream& is, Int& i)
{
	is >> i.value;
	return is;
}

bool operator<(const Int& a, const Int& b)
{
	return a.value < b.value;
}

int main()
{
/*
	vector<Int> v;
	copy(istream_iterator<Int>(cin), istream_iterator<Int>(), back_inserter(v));
	sort(v.begin(), v.end());
	copy(v.begin(), v.end(), ostream_iterator<Int>(cout, " "));
	cout << endl;
*/
	Int v = 10;
	cout << ++v << endl;
	cout << v++ << endl;
	cout << v << endl;

	return 0;
}


觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> 前置后置自增自减操作符重载
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: C++编程 标签: , , ,
  1. 2010年10月22日16:24 | #1

    我是看不懂代码了,只是好希望自己也可以写上一段代码,那一定很牛。

    加油!

    [回复]

    代码疯子 回复:

    呵呵 各有各的方向嘛

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.