运算符重载

1.输入输出>>和<<的重载

       >>和<<的重载只能用友元函数。

       <<的重载格式严格为&ostream operator<<(&ostream,const class类&);其中返回值为ostream&,目的是为了级联。函数内两个参数的顺序不可以变化。

  >>的重载格式为&istream operator>>(&istream,class类&);其中返回值为istream&为了级联,两个参数的顺序不可以改变。

2.前置++和后置++的重载

为了实现前置++和后置++的重载,我们先要理解这两个的特性,区别和联系。

过程:对于++a和a++,前置++比较简单,直接在令a自增1即可;而后置++要先创建一个当前a的副本,然后令a自增1,然后返回该副本。

返回值:而且前置++返回的是左值,后置++返回的是右值,比如说++(++)a可以编译通过,但(a++)++便不会编译通过。为了实现这一个特性,前置++返回一个类的引用,

后置++返回一个const类。

函数原型:前置++和后置++的重载函数原型在原则上应该是一样的,但重载函数必须拥有不同的函数原型,虽然前置++和后置++的返回类型不同,但是返回类型不属于函数

型。为了避开这一个语法限制,后置++的函数原型里面有一个int形参,该形参没有用处,纯粹是提示这是后置++而不是前置++。如果为double形参也可以,但是当时规定了int,

便沿用下来了。在函数定义中,int后也可以没有变量。

于是函数原型及其实现如下:

class test{
	public:
		test& operator++();
		const test operator++(int);
	private:
		int a;
		int b;
};
test& test::operator++()
{
	a++;
	b++;
	return *(this);
}
const test test::operator++(int)
{
	test temp;
	temp=*(this);
	a++;
	b++;
	return temp;
}

3.不能重载的运算符

在友元函数中,小括号,方括号和箭头不能用友元函数进行重载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值