c++ 语法 运算符重载

不要滥用运算符重载

内置类型不能使用运算符重载

+号运算符重载 

#include <iostream>
#include "mathutil.hpp"
#include <string>
#include "People.hpp"
#include "Phone.hpp"
using namespace std;
class  Fclass{
public:int m_a;int m_b;
//    // 成员函数重载
//    Fclass operator+(Fclass &f) {
//        Fclass fClass(0,0);
//        fClass.m_a = this->m_a + f.m_a;
//        fClass.m_b = this->m_b + f.m_b;
//        return fClass;
//    }Fclass(int a,int b):m_a(a),m_b(b){}
};
// 全局函数重载
Fclass operator+(Fclass &f1, Fclass &f2) {Fclass fClass(0,0);fClass.m_a = f1.m_a + f2.m_a;fClass.m_b = f1.m_b + f2.m_b;return fClass;
}
Fclass operator+(Fclass &f1, int num) {Fclass fClass(0,0);fClass.m_a = f1.m_a + num;fClass.m_b = f1.m_b + num;return fClass;
}void test41() {Fclass fa(10, 21);Fclass fb(21, 5);Fclass f = fa + fb;std::cout << f.m_a << f.m_b << std::endl;// 成员函数重载本质调用//Fclass f = fa operator+ fb;//全局函数重载本质调用//Fclass f =  operator(fa+ fb);Fclass f2 = f + 10;std::cout << f2.m_a << f2.m_b << std::endl;}int main(int argc, const char * argv[]) {// insert code here...std::cout << "Hello, World!\n";test41();std::cout << "end!\n";return 0;
}

左移运算符重载

//全局函数重载左移运算符 不能用成员函数
ostream& operator<<(ostream &cout,Fclass &f) {// 本质operator<<(cout,f) 简化 cout<<cout << f.m_a << f.m_b;return cout;
}
void test42() {Fclass fa(10, 21);cout << fa << endl;
}

递增运算符重载

前置递增返回的是引用

后置递增返回的是值 后置递增后边需要一个int占位参数 必须是int类型

class  Fclass{
public:int m_a;int m_b;// 前置递增Fclass& operator++(){// 返回引用是对同一个对象做操作m_a++;m_b++;return *this;}// 后置递增Fclass operator++(int) {Fclass temp = *this;m_a++;m_b++;return temp;}Fclass(int a,int b):m_a(a),m_b(b){}
};
void test43() {Fclass fa(10, 21);cout << ++fa << endl;Fclass fa1(10, 21);fa1++;cout<< fa1 << endl;}

赋值运算符重载

#include <iostream>
using namespace std;
class GClass {
public:int *m_a;GClass& operator=(GClass &g){//堆上有内存先释放if (m_a != nullptr) {delete m_a;}/// 深拷贝m_a = new int(*g.m_a);return *this;}GClass(int a){m_a = new int(a);}~GClass() {if (m_a != nullptr) {delete m_a;}}
};
void test50() {GClass g(10);GClass g1(20);GClass g2(30);g = g1 = g2;std::cout <<  *g.m_a <<  *g1.m_a  <<  *g2.m_a << endl;}
int main(int argc, const char * argv[]) {// insert code here...std::cout << "Hello, World!\n";test50();std::cout << "end!\n";return 0;
}

关系运算符重载

class GClass {
public:int *m_a;bool operator==(GClass &g) {if (*m_a == *g.m_a) {return true;}return false;}bool operator!=(GClass &g) {if (*m_a != *g.m_a) {return true;}return false;}GClass(int a){m_a = new int(a);}~GClass() {if (m_a != nullptr) {delete m_a;}}
};

函数调用运算符重载

#include <iostream>
#include <string>
using namespace std;
class NSLog{
public:void operator()(string test) {cout << test << endl;}
};
class Add{
public:int operator()(int a,int b) {return a + b;}
};
int main(int argc, const char * argv[]) {// insert code here...std::cout << "Hello, World!\n";NSLog log;log("hello world");// 使用起来和函数调用很像 因此称为仿函数 仿函数非常灵活没有固定的写法Add add;cout << add(209,111) << endl;std::cout << "end!\n";return 0;
}

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

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

相关文章

jmeter设置关联

一、为什么要设置关联&#xff1f; http协议本身是无状态的&#xff0c;客户端只需要简单向服务器请求下载某些文件&#xff0c;无论是客户端还是服务端都不去记录彼此过去的行为&#xff0c;每一次请求之间都是独立的。如果jmeter需要设置跨线程组脚本&#xff0c;就必须设置…

机器学习本科课程 实验4 支持向量机

第一题&#xff1a;支持向量机的核函数 实验内容&#xff1a; 了解核函数对SVM的影响绘制不同核函数的决策函数图像简述引入核函数的目的 1. 导入模型 import numpy as np import matplotlib.pyplot as plt %matplotlib inline from matplotlib.colors import ListedColorm…

【LeetCode: 292. Nim 游戏+ 博弈问题】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

vue绘制语音波形图---wavesurfer.js

文章目录 创建实例optionsmethod接收Blob流 https://wavesurfer.xyz/ 创建实例 引入插件&#xff1a;import WaveSurfer from "wavesurfer.js"创建实例对象&#xff1a;this.wavesurfer WaveSurfer.create(options); <div id"waveform"><!-- t…

MySQL 小技巧:xtrabackup 软件包的下载及安装

案例&#xff1a;xtrabackup 软件包的下载及安装 软件包下载&#xff1a;Index of /percona/centos/7/RPMS/x86_64/ CentOS7 默认的数据库版本比较老,因此建议使用 xtrabackup 2.4 版本 // CentOS7 默认的数据库版本比较老,因此建议使用 xtrabackup 2.4 版本 // 安装 CentOS7 默…

性能评测|虚拟化和裸金属 K8s 哪个性能更好?

本文重点 整体而言&#xff0c;SKS&#xff08;虚拟机 Kubernetes&#xff09;可以达到裸金属 Kubernetes 性能的 82% – 96%&#xff0c;满足绝大部分场景下生产容器应用的性能需求。更多虚拟化与裸金属 Kubernetes 架构、特性、适用场景与性能对比&#xff0c;欢迎阅读文末电…

L1-040 最佳情侣身高差-java

输入样例&#xff1a; 2 M 1.75 F 1.8输出样例&#xff1a; 1.61 1.96 import java.util.Scanner;public class Main { public static void main(String[] args) {Scanner scanner new Scanner(System.in);int nscanner.nextInt();String[][] strnew String[n][2];for(int i…

自定义Dockerfile构建运行springboot

自定义Dockerfile构建运行springboot 通过dockerfile生成自定义nginx镜像 &#xff01;&#xff01;&#xff01;docker 必须在linux环境下才能进行如果你是window则需要装虚拟机 新建一个文件名字为Dockerfile&#xff0c;无需后缀 文件完整名就是Dockerfile,也可以自定义d…

相同的树[简单]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你两棵二叉树的根节点p和q&#xff0c;编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,…

敏捷软件研发管理流程- scrum

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具&#xff0c;提供端到端敏捷研发管理解决方案&#xff0c;涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo领歌上手快、实施成本低&#xff0c;可帮助企业快速落地敏捷&#xff0c;提质增效、缩短周期、加速创新…

了解 WebSocket 和 TCP :有何不同

WebSocket — 双向通讯的艺术 简要概述 WebSocket 代表着WebSocket通讯协议&#xff0c;提供了一条用于客户端和服务器间实现实时、双向、全双工通信的渠道。在WebSocket引入之前&#xff0c;网页应用的数据更新依赖于频繁的轮询&#xff0c;这种做法不仅效率低下&#xff0c;…

[python] 过年燃放烟花

目录 新年祝福语 一、作品展示 二、作品所用资源 三、代码与资源说明 四、代码库 五、完整代码 六、总结 新年祝福语 岁月总是悄然流转&#xff0c;让人感叹时间的飞逝&#xff0c;转眼间又快到了中国传统的新年&#xff08;龙年&#xff09;。 回首过去&#xf…

大模型 AI Agent 详细介绍

"大模型 AI agent" 通常指的是基于大型预训练模型的人工智能助手或智能代理。这些 AI 代理利用了大规模的语言模型&#xff08;如 GPT-3、BERT、T5 等&#xff09;或其他类型的模型&#xff08;如图像识别模型、多模态模型等&#xff09;来模拟人类行为和决策过程。这…

异地办公必不可缺的远程控制软件,原理到底是什么?

目录 引言远程桌面连接软件的作用与重要性 基本概念与架构客户端-服务器模型网络通信协议 核心技术组件图形界面捕获与传输输入转发会话管理 性能优化策略带宽优化延迟优化 引言 远程桌面连接软件的作用与重要性 在当今这个高度数字化和网络化的时代&#xff0c;远程桌面连接软…

【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II

作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 状态压缩 广度优先搜索 LeetCode1494. 并行课程 II 给你一个整数 n 表示某所大学里课程的数目&#xff0c;编号为 1 到 n &#xff0c;数组 relations 中&#xff0c; relations[i] [xi, yi] 表示一个先修课的关系&am…

关于服务器解析A记录和CNAME记录的分析

内容提要: 大致讲下理解,dns域名解析这一块 0 . 问题来源 最近搞了一个七牛云上传,然后需要配置融合cdn加速,也就是可以加速域名,中间有一部需要CNAME 域名,也就是将七牛云提供的域名CNAME一下,查阅资料其实就是起一个别名,好访问而已. 方便我们访问云存储,达到加速的效果. …

论文阅读-一个用于云计算中自我优化的通用工作负载预测框架

论文标题&#xff1a;A Self-Optimized Generic Workload Prediction Framework for Cloud Computing 概述 准确地预测未来的工作负载&#xff0c;如作业到达率和用户请求率&#xff0c;对于云计算中的资源管理和弹性非常关键。然而&#xff0c;设计一个通用的工作负载预测器…

2024年碰到这三条红线的电车,坚决不买!

文 | AUTO芯球 作者 | 雷歌 我最近有天夜里打车打到一辆威马汽车&#xff0c;车里乌漆麻黑一片&#xff0c;我好奇地问&#xff0c;“师傅你中控屏咋不打开&#xff0c;太黑了。”师傅带有怨气地吐槽&#xff1a; “X&#xff0c;威马破产了&#xff0c;车机也停了”。 车子…

P8711 [蓝桥杯 2020 省 B1] 整除序列--2024冲刺蓝桥杯省一

点击跳转例题 模拟即可 #include <bits/stdc.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl \n #define LL __int128using namespace std;const int N2e610,M1e310,mod998244353,INF0x3f3f3f3f;int a[N],b[N],c[N],pre[N];sign…

python算法与数据结构---动态规划

动态规划 记不住过去的人&#xff0c;注定要重蹈覆辙。 定义 对于一个模型为n的问题&#xff0c;将其分解为k个规模较小的子问题&#xff08;阶段&#xff09;&#xff0c;按顺序求解子问题&#xff0c;前一子问题的解&#xff0c;为后一子问题提供有用的信息。在求解任一子…