第五章、运算符重载

第五章、运算符重载

一、格式

operator是关键字,是专门用于定义重载运算符的函数的
运算符被重载后,其原有的功能仍然保留,没有丧失或改变
(1)重载为类的成员函数:
    返回类型 [类名::]operator 运算符名称(形参表){
        对运算符重载的处理;
    }

(2)重载为类的非成员函数(一般为友元函数):
    friend 返回类型 operator 运算符名称(形参表){
        对运算符重载的处理;
    }
    友元函数没有this指针,需给出所有传递参数
    若使用单目运算符且修改成员数据,需使用引用传递
(3)
一般单目运算符重载为类的成员函数,双目运算符重载为类的友元函数
=,(),[],->双目运算符不能重载为类的友元函数
>>和<<只能重载为类的友元函数

二、运算符重载的规则

1、C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载

2、C++不能重载的运算符:

.成员访问运算符
*成员指针访问运算符
::域运算符
sizeof长度运算符
?:条件运算符

3、重载不能改变运算符运算对象(即操作数)的个数

4、重载不能改变运算符的优先级

5、重载不能改变运算符的结合性:=是右结合性(自右向左)

6、重载运算符的函数不能有默认的参数

7、重载运算符必须和用户定义的自定义类型的对象一起使用,其参数至少应该有一个是类对象

8、用于类对象的运算符一般必须重载,但是有两个例外,运算符“=”和“&”不必用户重载

三、前缀和后缀运算符

1、前缀运算符:++i、–i
类名 operator++();
2、后缀运算符:i++、i–
类名 operator++(int x);//int x为哑元参数,仅表示重载后缀运算符

四、重载流插入运算符和流提取运算符

(1)输入流类istream,输出流类ostream,cin和cout分别是istream,ostream的对象
(2)
class Complex{
	public:
		friend ostream& operator<<(ostream&,Complex&);
		friend istream& operator>>(istream&,Complex&);
	private:
	double real;
	double imag;
}
ostream& operator<<(ostream &out.Complex &c){
	out<<c.real<<"+"<<c.imag<<endl;
	return out;
}
istream& operator>>(istream &in,Complex &c){
	in>>c.real>>c.imag;
	return in;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值