坚持学习100天:

46 篇文章 0 订阅
44 篇文章 0 订阅
本文介绍了C++中的运算符重载概念,包括如何实现编译时多态、如何为自定义类型定义运算符操作,以及运算符重载为成员函数和友元函数的细节。还探讨了不能重载的运算符以及运算符重载的调用方式。
摘要由CSDN通过智能技术生成

前言

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指针,所以操作数要通过友元运算符函数的参数指出。

五、放假开开心心

放假回家没电脑、所以起了一张另类的篇章。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值