当前位置: 首页 > news >正文

【0824作业】C++ 拷贝赋值函数、匿名对象、友元、常成员函数和常对象、运算符重载

一、思维导图

二、作业:实现关系运算符的重载

关系运算符重载 概念:

  1. 种类:>、>=、< 、<= 、 == 、!=
  2. 表达式:L#R (L表示左操作数,R表示有操作数,#表示运算符)
  3. 左操作数:既可以是左值也可以是右值
  4. 右操作数:既可以是左值也可以是右值
  5. 结果:bool类型的数据,右值
  6. 定义格式:
  • 成员函数版:const bool operator#(const 类名 &R)const
  • 全局函数版:const bool &operator#(const 类名 &L, const 类名 &R)

关系运算符种类:>、>=、< 、<= 、 == 、!=     

关系运算符重载的实现方法相同

2.1   >

① 成员函数重载

#include <iostream>
using namespace std;class Person
{
private:int a;int b;
public://无参构造函数Person() {}//有参构造函数Person(int a,int b):a(a),b(b){}//成员函数实现>号运算符重载bool operator>(const Person &R) const{if(a>R.a && b>R.b){return true;}else{return false;}}
};int main()
{Person s1(20,20);Person s2(2,1);if(s1.operator>(s2)){cout << "s1>s2" << endl;}return 0;
}

② 全局函数重载

#include <iostream>
using namespace std;class Person
{//将全局函数设置为友元friend bool operator>(const Person &R,const Person &L);
private:int a;int b;
public://无参构造函数Person() {}//有参构造函数Person(int a,int b):a(a),b(b){}
};bool operator>(const Person &R,const Person &L)
{//成员函数实现>号运算符重载if(R.a>L.a && R.b>L.b){return true;}else{return false;}
}
int main()
{Person s1(20,20);Person s2(2,1);if(operator>(s1,s2)){cout << "s1>s2" << endl;}return 0;
}

2.2   >=

 ① 成员函数重载

类内函数:

    //成员函数实现>=号运算符重载bool operator>=(const Person &R) const{if(a>=R.a && b>=R.b){return true;}else{return false;}}

main函数内的调用函数:

    if(s1.operator>=(s2)){cout << "s1>=s2" << endl;}

② 全局函数重载

#include <iostream>
using namespace std;class Person
{//将全局函数设置为友元friend bool operator>=(const Person &R,const Person &L);
private:int a;int b;
public://无参构造函数Person() {}//有参构造函数Person(int a,int b):a(a),b(b){}
};bool operator>=(const Person &R,const Person &L)
{//成员函数实现>=号运算符重载if(R.a>=L.a && R.b>=L.b){return true;}else{return false;}
}
int main()
{Person s1(20,20);Person s2(2,1);if(operator>=(s1,s2)){cout << "s1>=s2" << endl;}return 0;
}

http://www.lryc.cn/news/140211.html

相关文章:

  • ubuntu 22.04 LTS openai triton 安装
  • Android SDK 上手指南||第七章 Java应用程序编程
  • Vue 框架如何获取数组中的值?
  • 如何成立一家音频芯片/算法设计公司
  • 用docker-compose搭建LNMP
  • JavaScript:基本语法(变量与函数的定义与使用)
  • 树莓派4B上安装Gitlab
  • JVM 之字节码(.class)文件
  • neo4j函数
  • wazuh初探系列一 : wazuh环境配置
  • 【2023】Spring Validation中@NotNull注解、@NotBlank注解介绍以及使用
  • nodejs+vue养老院管理系统 u1yrv
  • 高效PDF校对:释放高质量内容的力量
  • 【Git游戏】提交的技巧
  • SQL注入读写文件
  • stm32之12.如何使用printf打印输出
  • 敏感挂载hotplug容器逃逸分析与复现
  • RTThread学习有关的Keil的两个符号 $Sub$ $main 与 $Super$ $main
  • Python实现企业微信群告警
  • python基础教程:re模块用法详解
  • 基于亚马逊云科技无服务器服务快速搭建电商平台——部署篇
  • git介绍+集成到IDEA中+使用gitee
  • 【java】【项目实战】[外卖四]分类管理业务开发
  • 【Go 基础篇】Go语言包详解:模块化开发与代码复用
  • 【业务功能篇82】微服务SpringCloud-ElasticSearch-Kibanan-docke安装-进阶实战
  • 【工具】XML和JSON互相转换
  • 前端面试:【浏览器与渲染引擎】Web APIs - DOM、XHR、Fetch、Canvas
  • 编码基础一:侵入式链表
  • 深圳IT行业供需:蓬勃发展的科技中心
  • LeetCode 面试题 02.01. 移除重复节点