面向对象程序设计——简简单单运算符重载

博客聚焦C++运算符重载和数据类型转换。介绍运算符重载可声明为类成员函数或友元函数,分析只能通过成员函数或友元函数重载的运算符原因,列出不可重载的运算符,还提及数据类型转换可通过转换构造函数和运算符重载实现。

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

在这里插入图片描述

前言

虽然考试又又又推迟了,但是复习仍然很紧迫哦~珍惜时间!冲!!!
今天开运算符重载,这一块的重点如下:
在这里插入图片描述

运算符重载概述

由于重载后的运算符需要经常访问类的私有数据成员,因此,运算符被声明为类的成员函数或类的友元函数。一般来说,运算符是可以重载为以上两种形式的,但是有的运算符只能重载为成员函数。这里,就进入了需要研究的第一个问题。

Ask1:为什么有的运算符只能通过成员函数重载?

只能通过成员函数重载的运算符如下:’=’,’"()","[]","->"

这些运算符系统会提供默认的赋值运算符重载,使用友元函数进行运算符重载的话,函数的参数列表不同,会影响原有功能的正常运行。

Ask2:为什么有的运算符只能通过友元函数重载?

只能通过友元函数重载的运算符如下:“<<”、">>"

对于双目运算符,其若声明为类的成员函数,则运算符左侧即为类对象本身。但是输出输出的左侧应为istream对象或ostream对象,即应为输入或输出流,故只能声明为友元函数。

Ask3:不可以被重载的运算符有哪些?

在C++中,以下运算符不能被重载:.、*、::、?:、sizeof

常见运算符重载

//输入运算符重载
class xx{
	friend istream & operator>>(istream &is,xx &c);
}

istream & operator >>(istream &is,xx &c){
	is>>c.r>>c.i;
	return is;
}

数据类型转换概述

  • 使用转换构造函数:具有带一个参数的调用形式的构造函数
  • 使用运算符重载:强制类型转换运算符重载函数。利用operator进行重载,只能重载为类的成员函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值