前言
Hello,我是修齊。
学习C++的第一百零一二天,4月30号早上下班了就放假、呆宿舍躺了一天、顺便等了12个小时核酸结果。
在这里记录一些学习的东西和学习的心情,内容主要是一些自己学习整理的小笔记。
一、运算符重载
1.运算符重载实现的是编译时的多态,即静态多态性。
2.C++预定义的运算符只是对基本数据类型进行操作,而对于自定义的数据类型比如类,却没有类似的操作。为了实现对自定义类型的操作。
3.运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时,导致不同类型的行为。
4.运算符重载就是运用函数重载的方法,对C++提供的标准运算符重新定义,以完成某种特定的操作。
5.运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作。
二、运算符函数定义
1.类型转换运算符包括int、char、long、float、int*、char等。
2.不能重载的运算符是:“.”、“”、“∷”、“sizeof”和“?:”。
<返回类型说明符> operator <运算符符号>(<参数表>)
{
<函数体>
}
二、代码
class CAdd //定义类CAdd
{ 
public:
int m_Operand;
CAdd() //定义构造函数
{
m_Operand=0;
}
CAdd(int value) //重载构造函数
{
m_Operand=value;
}
};
CAdd operator +(CAdd a, int b) //重载“+”运算符,操作CAdd类
//第一个参数类型是CAdd,返回类型是CAdd
{
CAdd sum; //创建对象
sum.m_Operand=a. m_Operand +b; //实现类中成员变量与指定整型变量相加功能
return sum;
}
void main()
{
CAdd a(5),b; //创建对象
b=a+8; //调用重载后的“+”运算符
cout<<"the sum is: "<<b.m_Operand<<endl;//输出
}
三、重载
1.运算符的重载形式有两种:一种是重载为类的成员函数,一种是重载为类的友元函数。
2.将运算符重载为它将要操作的类的成员函数,称为成员运算符函数。
<返回类型> operator<运算符>(参数表);
在类外定义的一般形式为:
<返回类型> <类名∷> operator<运算符>(参数表)
{
函数体
}
3.双目运算符重载为成员函数时,左操作数是访问该重载运算符的对象本身的数据,由this指针指出,由操作数通过成员运算符函数的参数指出。
class X
{
//
int operator+(X ob);
}
4.C++中显式和隐式两种调用方法。
5.单目运算符重载为成员函数时,操作数是访问该重载运算符的对象本身的数据,由this指针指出,所以,此时成员运算符函数没有参数。
class X
{
//
int operator++();
}
四、先画个大饼、慢慢看
1.将重载的运算符函数定义为类的友元函数,称为友元运算符函数。
2.友元运算符函数在类内声明的
friend<返回类型> operator<运算符>(参数表);
3.在类外定义的
返回类型> operator<运算符>(参数表)
{
函数体
}
4.双目运算符重载为友元函数时,由于没有this指针,所以两个操作数都要通过友元运算符函数的参数指出。与运算符重载为类的成员函数类似,双目运算符重载为友元函数后,其调用也有显式和隐式两种方法。
5.与单目运算符重载为成员函数相同,单目运算符重载为友元函数时,由于没有this指针,所以操作数要通过友元运算符函数的参数指出。
五、放假开开心心
放假回家没电脑、所以起了一张另类的篇章。