【C++第二阶段-重载-关系运算符函数调用】

你好你好!
以下内容仅为当前认识,可能有不足之处,欢迎讨论!


文章目录

  • 关系运算符-重载-判断相等
  • 函数调用运算符重载


关系运算符-重载-判断相等

场景:两个对象,若有年龄和性别的不同,是否可以直接通过比较运算符来比较,而不用单独地取出每个对象的成员属性单独比较?

代码实现:

#include<iostream>
#include<string>using namespace std;
void test_0215_1();class Person {friend void test_0215_1();public:Person(int age , string name);~Person();bool operator==(Person& contrast);bool operator!=(Person& contrast);private :int person_age;string person_name;
};Person::Person(int age , string name) {cout << "有参构造函数调用" << "." << endl;person_age = age;person_name = name;cout << "age = " << age << "." << endl;cout << "name = " << name << "." << endl;
}Person::~Person() {cout << "析构函数调用" << "." << endl;
}bool Person::operator==(Person& contrast) {int this_variable = this->person_age;int person_variable = contrast.person_age;string this_name = this->person_name;string person_name = contrast.person_name;if (this->person_age == contrast.person_age && this->person_name == contrast.person_name) {return 1;}return 0;
}bool Person::operator!=(Person& contrast) {int this_age = person_age;string this_name = person_name;if (person_age != contrast.person_age && person_name != contrast.person_name) {return 1;}return 0;
}void test_0215_1() {Person per(15 , "Tom"), son(15 , "Tom");bool result = per == son;cout << "per == son ?==>" << (per == son ) << "." << endl;cout << "per != son ?==>" << (per != son) << "." << endl;
}int main() {cout << "hello ! world ! " << endl;test_0215_1();system("pause");return 0;
}

运行结果:

image-20240215215241769

可以看到,两者赋值都为"Tom15",经过重载后。信息一致。

函数调用运算符重载

使用场景:传入不同的参数,实现不同的功能;匿名类使用。

代码展示:

#include<iostream>
#include<string>using namespace std;
void test_0215_2();class Print {
public:Print();void operator()(string con);
private:string print_context;
};class Add {
public:int operator()(int num, int ber) {return num + ber;}
};void Print::operator()(string con) {//第一个括号是重载的符号cout << con << "." << endl;
}Print::Print() {//print_context = context;
}void test_0215_2() {//Print print();//这样写会被当成函数的声明,返回值是Print,应该下面这样写Print print;string query = "hello ? world ? ";print(query);cout << "正常使用add功能" << "." << endl;int add = Add()(15, 20);cout <<"add = Add(15,20) ==> " << add << endl;cout << "匿名函数对象调用" << "." << endl;cout <<"Add()(20,20) ==> " << Add()(20, 20) << "." << endl;
}int main() {cout << "hello ! world ! " << endl;test_0215_2();system("pause");return 0;}

运行结果

image-20240215223801608

由图可以看出,打印输出有结果,同时有匿名函数对象的调用。


以上是我的学习笔记,希望对你有所帮助!
如有不当之处欢迎指出!谢谢!

学吧,学无止境,太深了

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

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

相关文章

Stable Diffusion 的提示词入门

一、正向提示词和反向提示词 Stable Diffusion 中的提示词通常用于指导用户对生成的图像进行控制。这些提示词可以分为正向提示词&#xff08;Positive Prompts&#xff09;和反向提示词&#xff08;Negative Prompts&#xff09;两类&#xff0c;它们分别影响图像生成过程中的…

H12-821_48

48.下面是台路由器输出的BGP信息,关于这段信息描述措误的是 A.路由器的Router ID是1.1.1.9 B.display bgp network命令来显示BGP通过network ( BGP)的通告的路由信息 C.该路由器所在AS号是10 D.该路由器通过import-route命今引入了4.4.4.0/24的网段 答案&#xff1a;D 注释&am…

Panalog 日志审计系统 sessiptbl.php 前台RCE漏洞复现

0x01 产品简介 Panalog是一款日志审计系统,方便用户统一集中监控、管理在网的海量设备。 0x02 漏洞概述 Panalog日志审计系统 sessiptbl.php接口处存在远程命令执行漏洞,攻击者可执行任意命令,接管服务器权限。 0x03 影响范围 version <= MARS r10p1Free 0x04 复现…

c++阶梯之类与对象(下)

前文&#xff1a; c阶梯之类与对象&#xff08;上&#xff09;-CSDN博客 c阶梯之类与对象&#xff08;中&#xff09;-CSDN博客 c阶梯之类与对象&#xff08;中&#xff09;&#xff1c; 续集 &#xff1e;-CSDN博客 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&a…

[经验] 欧阳修唐宋八大家之首是谁 #微信#知识分享#学习方法

欧阳修唐宋八大家之首是谁 1、唐宋八大家之首是谁 唐宋八大家是中国文学史上最具代表性的八位大文豪&#xff0c;他们的文学成就在中国文学史上占有重要地位&#xff0c;被誉为文学史上的“巨人”。 唐宋八大家之首&#xff0c;无疑是唐代著名诗人杜甫。他出生在一个贫苦的家…

嵌入式I2C 信号线为何加上拉电阻(图文并茂)

IIC 是一个两线串行通信总线&#xff0c;包含一个 SCL 信号和 SDA 信号&#xff0c;SCL 是时钟信号&#xff0c;从主设备发出&#xff0c;SDA 是数据信号&#xff0c;是一个双向的&#xff0c;设备发送数据和接收数据都是通过 SDA 信号。 在设计 IIC 信号电路的时候我们会在 SC…

VMware虚拟机网络配置

VMware虚拟机网络配置 桥接模式NAT网络 桥接模式 桥接模式其实就是借助你宿主机上的网卡进行联网和通信&#xff0c;所以相当于虚拟机和宿主机平级&#xff0c;处于同一个网段中。 配置要点&#xff1a; 注意选择正确的宿主机网卡 查看宿主机的网络信息&#xff0c;这些信息指…

【C语言】socketpair 的系统调用

一、 Linux 内核 4.19socketpair 的系统调用 SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol,int __user *, usockvec) {return __sys_socketpair(family, type, protocol, usockvec); } 这段代码定义了一个名为 socketpair 的系统调用。系统调用是操作…

SpringCloud之Nacos用法笔记

SpringCloud之Nacos注册中心 Nacos注册中心nacos启动服务注册到Nacosnacos服务分级模型NacosRule负载均衡策略根据集群负载均衡加权负载均衡Nacos环境隔离-namespace Nacos与eureka的对比临时实例与非临时实例设置 Nacos配置管理统一配置管理微服务配置拉取配置自动刷新远端配置…

thinkphp+vue企业产品展示网站f7enu

本文首先介绍了企业产品展示网站管理技术的发展背景与发展现状&#xff0c;然后遵循软件常规开发流程&#xff0c;首先针对系统选取适用的语言和开发平台&#xff0c;根据需求分析制定模块并设计数据库结构&#xff0c;再根据系统总体功能模块的设计绘制系统的功能模块图&#…

相机图像质量研究(13)常见问题总结:光学结构对成像的影响--鬼影

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

springboot(eureka)

把resttemplate注入容器,通过此对象在java代码中发起http请求,用id查询对应的user数据,拿到对应的json,再自动json反序列化成对应对象 这样就实现不同数据库不同访问接口服务器的接口调用(跨服务的远程调用) 集群时候如何做,一个业务模块多个服务器的集群 注册 保存 拉取 eure…