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

面向对象程序设计——简简单单运算符重载_第1张图片

前言

虽然考试又又又推迟了,但是复习仍然很紧迫哦~珍惜时间!冲!!!
今天开运算符重载,这一块的重点如下:
面向对象程序设计——简简单单运算符重载_第2张图片

运算符重载概述

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

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进行重载,只能重载为类的成员函数

你可能感兴趣的:(C++,c++)