【笔记】C++程序设计第四版谭浩强第10章运算符重载

文章详细介绍了C++中的运算符重载,包括重载的方法、规则,以及作为成员函数和友元函数的处理方式。重点讨论了双目和单目运算符、流运算符的重载,并提到了不同类型数据间的转换,如转换构造函数和类型转换函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人的读书笔记,记录一下~
C

运算符重载
1方法
  1. 函数类型 operator 运算符名称(){}
  2. 重载后 c1+c2被解释为 c1.operator(c2)
2规则
  1. 不允许定义新的运算符
  2. . * :: sizeof ?:不允许重载
  3. 重载运算符参数至少有一个是类对象
  4. 其他规则见p287
3运算符重载函数的处理方式
3.1作为类的成员函数
  1. 重载后 c1+c2被解释为 c1.operator+(c2)。双目运算符,形参表中只有一个参数,因为this指向的对象是另一个。

  2. 类成员表达式的左边一定要是对象。

    c3=c2+i

    × c3=i+c2

3.2在类中声明为友元函数
  1. operator+(c1,c2)
  2. 双目运算符做友元函数,形参表中一定要有两个参数,不能省略
4重载双目运算符
5重载单目运算符

🐖:++前置后置不同,区分:在后置的形参中增加一个int形参,在声明和定义中都可以省略形参名,只保留int

6重载流运算符

istream& operator>>(istream &,自定义类&);//isream类对象的引用

ostream& operator<<(ostream &,自定义类&);

🐖:只能被声明为友元函数,而不能声明为成员函数,且两个形参的位置不能替换,还有istream使用引用,这些都是因为要实现连续输出/入,类在操作符右端才能连续操作。

🐖:同时,运算符函数重载为成员函数,他的第一个参数必须是本类的对象,交换律不适用。故,一般情况下,双目运算符重载为友元,单目运算符重载为成员函数。

🐖:cout<<mystring被解释为 operator<<(cout,mystring)

7不同类型数据的转换
7.1使用转换构造函数:其他类型->类

Complex(double r){}

🐖:只有一个参数

7.2类型转换函数:类->其他类型
  1. 只能作为类内成员函数
  2. 形式: operator 类型名(){} 。没有返回类型,转换的其他类型和函数名称一致。
  3. 使用的时候直接 类+double,编译系统会自动识别。
  4. 注意转换构造函数和类型转换函数同时使用的时候,会出现二义性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值