首页 > 其他分享 >运算符重载

运算符重载

时间:2024-02-06 20:11:37浏览次数:29  
标签:int 运算符 operator student 重载 main

运算符重载本质

重新定义运算符的操作,返回自定义的结果。

对于A operator sign (B res1 , C res2)
B类型的res1和C类型的res2,进行sign操作,返回一个类型是A的结果。

1. 一元运算符重载

(1)重载++

class student
{
    public:
        int a;
        student(int a)
        {
            this->a = a;
        }
        student operator ++  ()
        {
            ++a;
            return student(a);
        }
};

int main()
{
    student a(3);
    ++a;
    cout<<a.a;
    return 0;
}

(2)重载-(负号)

class student
{
    public:
        int a;
        student(int a)
        {
            this->a = a;
        }
        student operator -  ()
        {
            return student(-a);
        }
};

int main()
{
    student a(3);
    cout<<-a.a;
    return 0;
}

2. 二元运算符重载(+)

class student
{
    public:
        int a;
        student(int a)
        {
            this->a = a;
        }
        student operator + (student res)
        {
            return student(a+res.a);
        }
};

int main()
{
    student res1(3),res2(4);
    cout<<(res1+res2).a;
    return 0;
}

3. 关系运算符重载(<)

struct student
{
    int a;
    bool operator <  (student x)
    {
        return a<x.a;
    }
};

4. 输入输出运算符重载

class student
{
    public:
        int a,b;
//         student(int a,int b)
//         {
//             this->a = a;this->b = b;
//         }
        friend ostream &operator << (ostream &output,student &s)
        {
            output<<s.a<<" "<<s.b;
            return output;
        }
        friend istream &operator >> (istream &input , student &s)
        {
            input>>s.a>>s.b;
            return input;
        }
};

int main()
{
    student a;
    cin>>a;
    cout<<a;
    return 0;
}

5. 赋值运算符重载(=)

class student
{
    public:
        int a,b;
        student(int a,int b)
        {
            this->a = a;this->b = b;
        }
        
        void operator = (student res)
        {
            a = res.a;b = res.b;
        }
};

int main()
{
    student a(3,2),b(2,3);
    a = b;
    cout<<a.a<<" "<<a.b;
    return 0;
}

6. 下标运算符重载

class student
{
    public:
        int a,b;
        int arr[100];
        student(int a,int b)
        {
            this->a = a;this->b = b;
        }
        int operator [] (int i)
        {
            return arr[i];
        }
};

int main()
{
    student a(3,2);
    a.arr[3] = 2;
    cout<<a[3];
    return 0;
}

标签:int,运算符,operator,student,重载,main
From: https://www.cnblogs.com/algoshimo/p/18010245

相关文章

  • C++编程练习||1.排序函数模板2.函数模板3.重载printArray函数模板
    1.排序函数模板已知主函数如程序后缀代码所示,请为其编写适当的模板函数,使主函数的bubbleSort函数可以对一个整型数组和一个浮点数数组进行输入、排序、输出操作。#include<iostream>#include<iomanip>usingnamespacestd;template<typenameT>voidbubbleSort(T*arr,......
  • 方法的重载和命令行传参
    方法的重载重载就是在一个类中,有相同的函数名称,但形参不同的函数。方法的重载的规则:方法名称必须相同。参数列表必须不同。(个数不同、或类型不同,参数排列顺序不同等)方法的返回类型可以相同也可以不相同。仅仅返回类型不同不足以成为方法的重载。实现理论:方法名称相......
  • 3.8新特性——海象运算符
    海象运算符海象运算符,即:=,在PEP572中被提出,并在Python3.8版本中发布。海象运算符的英文原名叫AssignmentExpresions,即赋值表达式。它由一个冒号:和一个等号=组成,即:=。而它被称作walrusoperator(海象运算符),是因为它长得像一只海象。语法格式及解释:variable:=expre......
  • 34 数组操作符的重载
    数组访问的一些思考string类最大限度地考虑了C字符串的兼容性。可以按照使用C字符串的方式适应string对象。#include<iostream>#include"add.h"usingnamespacestd;intmain(void){strings="safbd1334";intn=0;for(inti=0;i<s.length()......
  • Java 运算符详解与字符串处理技巧
    Java运算符算术运算符算术运算符用于执行常见的数学运算。运算符名称描述示例+加法将两个值相加x+y-减法从一个值中减去另一个值x-y*乘法将两个值相乘x*y/除法将一个值除以另一个值x/y%取模返回除法余数x%y++自增将变量......
  • 13 - 运算符
    运算符汇总参考资料:菜鸟教程:python3运算符Python文档:运算优先级算术运算符以下假设变量a=10,变量b=21:运算符描述实例+加-两个对象相加a+b输出结果31-减-得到负数或是一个数减去另一个数a-b输出结果-11*乘-两个数相乘或是返回一个被重复......
  • 运算符
    运算符Java语言支持如下运算符:优先级()算数运算符:+、-、*、/、%、++,--packageoperator;publicclassDemo04{publicstaticvoidmain(String[]args){//++--自增,自减一元运算符inta=3;intb=a++;//执行完这行代码后,先给b赋值......
  • 什么是多态?它和重载有什么区别?
    ​前言大家好,我是chowley,相信学过编程语言的你,肯定听说过多态和重载两个概念,可多数人对他们之间的区别还是不太清晰,导致同时听到两个词一起出现时会大脑空白,今天我就来详细的介绍一下二者的区别,请准备好笔记,我们即刻出发!多态1.定义多态是指同一操作或方法在不同的对象上有不......
  • 方法重载和方法重写的区别
    方法重载和方法重写的区别1.什么是方法重载?方法重载(MethodOverloading)是指在同一个类中,可以定义多个方法具有相同的名称,但是参数列表不同。重载的方法可以有不同的参数类型、不同的参数个数,或者参数类型的顺序不同。方法重载的目的是提高代码的灵活性和可读性。方法重载的规则......
  • 空值合并运算符 '??' 与 || 比较
    空值合并运算符'??'与||比较https://zh.javascript.info/nullish-coalescing-operator或运算符||可以以与??运算符相同的方式使用。`letfirstName=null;letlastName=null;letnickName="Supercoder";//显示第一个真值:alert(firstName||lastName||nic......