c++部分操作符重载及仿函数使用

代码实例:


#include<iostream>
#include<cstdlib>
using namespace std;

template <typename T>
struct Plus
{
	T operator()(const T& t1, const T& t2) const
	{
		return t1+t2;
	}
};

template <typename T>
struct Minus
{
	T operator()(const T&t1, const T& t2) const
	{
		return t1- t2;
	}
};

class INT
{
public:
    INT(int mi):_mi(mi){};
friend ostream& operator<<(ostream& os, const INT& Int);

	INT& operator++() //increment and then fetch
	{
		++(this->_mi);
		return *this;
	}
	INT operator++(int) //fetch and then increment
	{
		INT tmp = *this;
		++(*this);
		return tmp;
	}
	INT& operator--() //decrement and then fetch
	{
		--(this->_mi);
		return *this;
	}
    INT& operator--(int) //
	{
		INT tmp = *this;
		--(*this);
		return tmp;
	}
	int& operator*() const
	{
		return (int&)_mi;
	}
    virtual ~INT()
	{}
private:
	int _mi;
};
ostream& operator<<(ostream& os, const INT& Int)
{
	os << Int._mi << endl;
	return os;
}

template<class T>
int fcmp(const void* elm1, const void* elm2)
{
	const T* a = (const T*) elm1;
	const T* b = (const T*) elm2;
	if(*a-*b>0) return 1;
	if(*a-*b == 0) return 0;
	if(*a-*b < 0) return -1;
}


int main(int argc, char *argv[])
{
    double ia[] = {12, 3, 25, 84,33.4, 56.9};
	qsort(ia, sizeof(ia)/sizeof(double), sizeof(double), fcmp<double>);
	for(int i=0; i<6;++i)
		cout << ia[i]<<" ";
	cout<<endl;
	cout <<"-----------------------------------------------"<< endl;
	INT Int(5);
	cout<<Int++ <<endl;
	cout << ++Int<<endl;
	cout << Int--<<endl;
	cout << --Int << endl;
	cout << *Int << endl;
	cout <<"-----------------------------------------------"<< endl;
	Plus<int> plusobj;
    Minus<int> minusobj;
	cout << plusobj(35,10) << endl;
	cout << minusobj(35, 10) << endl;
	cout <<"-----------------------------------------------"<< endl;
	
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值