C++_pen_重载(1)

news2024/11/16 11:55:37

普通运算符重载

  • C++准许以运算符命名函数

    string love = "i";
    
    love += " love";//+(love, " love");
    love += " you";//+(love, " you");
    
    cout<< "i love you";// <<(cout, "i love you");
    
  • 运算符分类

    数学运算符

    +  -  *  /  ++  --
    

    关系运算符

    ==  >=  <= !=
    

    特殊运算符

    [ ]
     =  赋值运算符
    ()仿函数
    << 输出运算符
    

数学运算符关系运算符例子

#include <stdio.h>
#include <unistd.h>


class myTimer{
public:
    myTimer(){
        hour = 0;
        min = 0;
        sec = 0;
    }
    ~myTimer(){

    }
    void addtimer(int sec = 1){
        this->sec = this->sec + sec;
    }
    void showtime(){
        printf("%02d:%02d:%02d\n",hour / 3600,min / 60,sec % 60);
    }
    //重载5
    bool operator == (myTimer &x){
        return (sec == x.sec && min == x.min && hour == x.hour) ? true : false;
    }

    //重载4 ++t
    myTimer operator++(){
        sec++;
        return *this;
    }

    /********所以一般写代码循环尽量用++i,因为i++会有拷贝过程******/
    //重载3  t++
    myTimer operator ++ (int){
        myTimer tmp = *this;//先记录自己
        sec++;//自己++
        return tmp;//返回之前的
    }
    //重载2
    myTimer operator + (int t){
        myTimer tmp;
        tmp.sec = sec + t;
        return tmp;
    }
    //重载1
    myTimer operator + (myTimer &x){
        myTimer tmp;
        tmp.sec = sec + x.sec;
        tmp.min = x.min;
        tmp.hour = x.hour;
        return tmp;
    }
private:
    int hour;
    int min;
    int sec;
};


int main(int argc, char const *argv[])
{
    myTimer t1;
    t1.addtimer(3);
    myTimer t2;
    t2.addtimer(6);
    myTimer t3;
    
    t3 = t2++;//重载3   先赋值再加
    printf("重载3 ");
    t3.showtime();

    t3 = ++t2;//重载4   先加再赋值
    printf("重载4 ");
    t3.showtime();

    printf("重载5 ");
    if(t2 == t3)//重载5
        printf("==\n");
    else
        printf("!=\n");
    
    printf("重载1 ");
    t3 = t1 + t2;//重载1
    t3.showtime();

    printf("重载2 ");
    t3 = t3 + 2;//重载2
    t3.showtime();
    
    printf("重载5 ");
    if(t2 == t3)//重载5
        printf("==\n");
    else
        printf("!=\n");
    
    return 0;
}

结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1060539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BL808学习日志-2-LVGL for M0 and D0

一、lvgl测试环境 对拿到的M1S_DOCK开发板进行开发板测试&#xff0c;博流的官方SDK是支持M0和D0两个内核都进行测试的&#xff1b;但是目前只实现了M0的LVGLBenchmark&#xff0c;测试D0内核中发现很多莫名其妙的问题。一会详细记录。 使用的是开发板自带的SPI显示屏&#xff…

YOLOv8轻量化模型:DCNV3结合c2f | CVPR2023

💡💡💡本文解决什么问题:模型轻量化创新引入CVPR20023 DCNV3,基于DCNv2算子,重新设计调整并提出DCNv3算子 DCNV3和C2f结合 | 轻量化的同时在数据集并有小幅涨点; YOLO轻量化模型专栏:http://t.csdnimg.cn/AeaEF ​​​​​​​ 1.InternImage介绍 ​ 论文:…

jsbridge实战2:Swift和h5的jsbridge通信

[[toc]] demo1: 文本通信 h5 -> app 思路&#xff1a; h5 全局属性上挂一个变量app 接收这个变量的内容关键API: navigation代理 navigationAction.request.url?.absoluteString // 这个变量挂载在 request 的 url 上 &#xff0c;在浏览器实际无法运行&#xff0c;因…

Redis分页+多条件模糊查询组合实现思路

Redis是一个高效的内存数据库&#xff0c;它支持包括String、List、Set、SortedSet和Hash等数据类型的存储&#xff0c;在Redis中通常根据数据的key查询其value值&#xff0c;Redis没有模糊条件查询&#xff0c;在面对一些需要分页、排序以及条件查询的场景时(如评论&#xff0…

计数排序(Counting Sort)详解

计数排序&#xff08;Counting Sort&#xff09;是一种非比较排序算法&#xff0c;其核心思想是通过计数每个元素的出现次数来进行排序&#xff0c;适用于整数或有限范围内的非负整数排序。这个算法的特点是速度快且稳定&#xff0c;适用于某些特定场景。在本文中&#xff0c;我…

如何像人类一样写HTML之图像标签,超链接标签与多媒体标签

文章目录 前言一、图像标签1.1 什么是图像标签&#xff1f;2.2 如何使用图像标签&#xff1f; 二、超链接标签2.1 什么是超链接标签&#xff1f;2.2 如何使用超链接标签&#xff1f; 三、多媒体标签3.1 什么是多媒体标签&#xff1f;3.2 如何使用多媒体audio标签&#xff1f;3.…

Android开源 Skeleton 骨架屏 V1.3.0

目录 一、简介 二、效果图 三、引用 Skeleton 添加jitpack 仓库 添加依赖: 四、新增 “块”骨架屏 1、bind方法更改和变化&#xff1a; 2、load方法更改和变化&#xff1a; 五、关于上一个版本 一、简介 骨架屏的作用是在网络请求较慢时&#xff0c;提供基础占位&…

基于绯鲵鲣优化的BP神经网络(分类应用) - 附代码

基于绯鲵鲣优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于绯鲵鲣优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.绯鲵鲣优化BP神经网络3.1 BP神经网络参数设置3.2 绯鲵鲣算法应用 4.测试结果&#x…

Springboot场景开发多面手

LinkedBear &#xff0c;资深 Java 高级工程师&#xff0c;底层技术研究者与分享者&#xff0c;倾心研究 Spring 技术体系多年&#xff0c;对 Spring、Spring Boot 、SpringCloud 等框架有独到的见解&#xff0c;拥有丰富的框架体系实践经验和架构封装经验。善于总结、输出&…

【MySQL】表的约束(二)

文章目录 一. 主键二. 自增长三. 唯一值四. 外键结束语 一. 主键 主键primary key 用来唯一的约束该字段里面的数据&#xff0c;不能重复&#xff0c;不能为空&#xff0c;一张表最多只能有一个主键&#xff0c;主键所在的列通常是整数类型 创建表时直接在字段上指定主键 mysq…

Spring Cloud Zuul 基本原理

Spring Cloud Zuul 底层是基于Servlet实现的&#xff0c;核心是通过一系列的ZuulFilter来完成请求的转发。 1、核心组件注册 1.1. EnableZuulProxy注解 启用Zuul作为微服务网关&#xff0c;需要在Application应用类加上EnableZuulProxy注解&#xff0c;而该注解核心是利用Im…

国庆假期day5

作业&#xff1a;请写出七层模型及每一层的功能&#xff0c;请绘制三次握手四次挥手的流程图 1.OSI七层模型&#xff1a; 应用层--------提供函 表示层--------表密缩 会话层--------会话 传输层--------进程的接收和发送 网络层--------寻主机 数据链路层----相邻节点的可靠传…

Qt+openCV学习笔记(十六)Qt6.6.0rc+openCV4.8.1+emsdk3.1.37编译静态库

前言&#xff1a; 有段时间没来写文章了&#xff0c;趁编译库的空闲&#xff0c;再写一篇记录文档 WebAssembly的发展逐渐成熟&#xff0c;即便不了解相关技术&#xff0c;web前端也在不经意中使用了相关技术的库&#xff0c;本篇文档记录下如何编译WebAssembly版本的openCV&…

TouchGFX之文本和字体

TouchGFX可将动态值作为文本的一部分来使用。 这可以通过在文本中使用通配符来实现。 按给定格式<*>指定通配符&#xff0c;其中的*表示不会包含在结果文本中的可选辅助文本。 一个文本中可以有至多2个通配符。 在TouchGFX 设计器中&#xff0c;只需单击“”按钮为所选文…

Leetcode1071. 字符串的最大公因子(三种方法,带详细解析)

Leetcode1071. 字符串的最大公因子 对于字符串 s 和 t&#xff0c;只有在 s t … t&#xff08;t 自身连接 1 次或多次&#xff09;时&#xff0c;我们才认定 “t 能除尽 s”。 给定两个字符串 str1 和 str2 。返回 最长字符串 x&#xff0c;要求满足 x 能除尽 str1 且 x 能…

g(x)=abx形式的函数最小二乘法计算方法

设函数&#xff0c;利用最小二乘法求解系数a和b: 设&#xff0c;&#xff0c;有 用最小二乘法求解和后&#xff0c;可得和&#xff1a; &#xff0c;

[Spring] Spring5——AOP 简介

目录 一、AOP 简介 1、什么是 AOP 二、AOP 底层原理 1、动态代理原理 2、基于接口的 JDK 动态代理 3、基于继承的 CGLib 动态代理 三、底层原理实现—— JDK 动态代理 1、使用 Proxy 类的方法创建代理对象 2、JDK 动态代理示例 四、AOP 操作术语 1、连接点 2、切入…

【算法学习】-【双指针】-【快乐数】

LeetCode原题链接&#xff1a;202. 快乐数 下面是题目描述&#xff1a; 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果…

408计网应用层总结

网络应用模型 ■客户/服务器模型&#xff08;C/S&#xff09;&#xff1a;客户是服务请求方&#xff0c;服务器是服务提供方 ■P2P模型&#xff1a;各主机都是客户&#xff0c;也都是服务器&#xff08;任意一对计算机成称为对等方&#xff09; 注&#xff1a; 1.客户…

linux入门---信号的保存和捕捉

目录标题 信号的一些概念信号的保存pending表block表handler表 信号的捕捉内核态和用户态信号的捕捉 信号的一些概念 1.进程会收到各种各样的信号&#xff0c;那么程序对该信号进行实际处理的动作叫做信号的递达。 2.我们之前说过当进程收到信号的时候可能并不会立即处理这个信…