运算符重载(2)

1.赋值运算符重载

#include<iostream>
using namespace std;

class Person
{	
	friend void test01();
public:
	Person(int age)
	{
		m_Age = new int(age);
	}


	/*堆区的数据由程序员手动开辟并手动释放*/
	~Person()
	{
		if (m_Age != NULL)
		{
			delete m_Age;
		}
	}

	Person& operator=(Person &p)
	{
		//编译器提供的浅拷贝
		//m_Age = p.m_Age;

		//应该先判断是否有属性在堆区,如果有先释放干净,再深拷贝 p1=p2
		if (m_Age != NULL)
		{
			delete m_Age;
			m_Age = NULL;
		}

		//深拷贝
		 m_Age = new int(*p.m_Age);

		 //返回对象本身
		 return *this;
	}
private:
	int* m_Age;
};

void test01()
{
	Person p1(18);//手动释放后会导致p2对空间的重复释放,违规操作

	Person p2(20);

	Person p3(30);
	//p2=p1返回自身才能使得p3也被赋值
	p3=p2=p1;
	cout << "p1年龄为 " << *p1.m_Age << endl;
	cout << "p2年龄为 " << *p2.m_Age << endl;
	cout << "p3年龄为 " << *p3.m_Age << endl;
}

int main()
{
	test01();
}

2.关系运算符(== !=)的重载

#include<iostream>
using namespace std;
#include<string.h>
#include<stdbool.h>

class Person
{
public:
	Person(string name, int age)
	{
		m_Name = name;
		m_Age = age;
	}

	bool operator==(Person p)
	{	
		if (m_Name == p.m_Name && m_Age == p.m_Age)
		{
			return true;
		}
		else
			return false;

	}

	bool operator!=(Person p)
	{
		if (m_Name == p.m_Name && m_Age == p.m_Age)
		{
			return false;
		}
		else
			return true;
	}
private:
	string m_Name;
	int m_Age;
};


void test01()
{
	Person p1("石暄",38);
	Person p2("石暄", 38);
	//if (p1==p2)
	//{
	//	cout << "两个对象相同" << endl;
	//}
	//else
	//{
	//	cout << "不同" << endl;
	//}
	if (p1 != p2)
	{
		cout << "不等" << endl;
	}
	else
	{
		cout << "相等" << endl;
	}
}

int main()
{
	test01();
}

3.函数调用运算符重载

#include<iostream>
using namespace std;
#include<string.h>

class MyPrint
{
public:
	void operator()(string test)
	{
		cout << test << endl;
	}
};

void MyPrint02(string test)
{
	cout << test << endl;
}

void test01()
{
	MyPrint myprint;
	//类对象为函数调用
	//使用起来非常类似于函数调用,因此被称为仿函数
	myprint("hello world");
	//这个就是函数调用
	MyPrint02("hello world");
}

class MyAdd
{
public:
	int operator()(int num1, int num2)
	{
		return num1 + num2;
	}
};

void test02()
{
	MyAdd myadd;
	int ret = myadd(10, 10);
	cout << "ret = " << ret << endl;

	//匿名函数对象MyAdd(特点,当前执行完后立即被释放)
	cout << MyAdd()(100, 100) << endl;
	
}

int main()
{
	/*test01();*/
	test02();
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如此建立网络根文件系统 Mount NFS RootFS

安静NFS系统服务 sudo apt-get install nfs-kernel-server 创建目录 sudo mkdir /rootfsLee 将buildroot编译的根文件系统解压缩到 sudo tar xvf rootfs.tar -C /rootfsLee/ 添加文件NFS访问路径 sudo vi /etc/exports sudo /etc/exports文件&#xff0c;添加如下一行 …

比 PSD.js 更强的下一代 PSD 解析器,支持 WebAssembly

比 PSD.js 更强的下一代 PSD 解析器&#xff0c;支持 WebAssembly 1.什么是 webtoon/ps webtoon/ps 是 Typescript 中轻量级 Adobe Photoshop .psd/.psb 文件解析器&#xff0c;对 Web 浏览器和 NodeJS 环境提供支持&#xff0c;且做到零依赖。 Fast zero-dependency PSD par…

创建SpringBoot和RabbitMQ的整合项目

文章目录 创建SpringBoot和RabbitMQ的整合项目首先快速创建一个maven项目引入SpringBoot整合rabbitMQ的依赖在src/main目录下创建resources目录并引入配置文件写消息发送者MessageSender写消息接收者MessageReceiver写RabbitMQConfig配置类写SpringBoot启动主类CommandLineRunn…

决策树模型示例

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个决策树模型pytorch程序,最后打印5个条件分别的影响力。 一 决策树模型是一种非参数监督学习方法&#xff0c;主要…

Java高阶私房菜:JVM垃圾回收机制及算法原理探究

目录 垃圾回收机制 什么是垃圾回收机制 JVM的自动垃圾回收机制 垃圾回收机制的关键知识点 初步了解判断方法-引用计数法 GCRoot和可达性分析算法 什么是可达性分析算法 什么是GC Root 对象回收的关键知识点 标记对象可回收就一定会被回收吗&#xff1f; 可达性分析算…

使用R语言进行简单的因子分析

在本文中&#xff0c;将介绍如何使用R语言进行因子分析&#xff0c;并通过一个示例演示整个过程。因子分析是一种多元统计分析方法&#xff0c;用于探索变量之间的潜在结构和关系。R语言提供了丰富的统计工具和包&#xff0c;使因子分析的实现变得简单而高效。 准备工作 首先…

c++中的链表list的模拟实现

拖更了半个月&#xff0c;我终于来填c的坑啦。上次我们说的vetcor不知道小伙伴还记得多少呢&#xff1f;今天我们要讲list的模拟实现。 目录 架构结点list表的结构 构造函数尾插push_back()尾删pop_back()计算个数&#xff1a;size()判断空empty()※迭代器问题普通迭代器迭代器…

数据结构:实验六:图的操作

一、 实验目的 &#xff08;1&#xff09;掌握图的邻接矩阵和邻接表存储结构。 &#xff08;2&#xff09;熟练图的邻接表的基本运算。 &#xff08;3&#xff09;加深图的深度优先遍历算法和广度优先遍历算法的理解 二、 实验要求 有下图所示的带权有向图及其对应的邻…

【Python时序预测系列】麻雀算法(SSA)优化LSTM实现单变量时间序列预测(源码)

这是我的第269篇原创文章。 一、引言 麻雀算法&#xff08;Sparrow Search Algorithm&#xff0c;SSA&#xff09;是一种基于麻雀群体行为的算法&#xff0c;它可以用来优化深度学习模型中的参数。在优化LSTM模型时&#xff0c;可以通过麻雀算法来调整LSTM的参数&#xff0c;以…

亚马逊测评的目的是什么?

测评的目的&#xff1a;店铺销量、留评 特别是新品&#xff0c;一个产品销量很低也没什么评价的产品&#xff0c;很难说服真实买家们&#xff0c;因为同类目还有其他的选择&#xff0c;不管是谁都不愿意当小白鼠的&#xff0c;而且打造爆款&#xff0c;提升产品权重这些都离不…

【华为】SVI接口实验配置

【华为】SVI接口实验配置 拓扑实验要求设备核心交换机PCPC1PC2 查看VLAN验证 配置文档 拓扑 实验要求 一台三层交换机&#xff0c;两台PC PC1 和 PC2 静态获取地址&#xff0c;并处于不同VLAN 然后PC的网关是处在三层交换机LSW1身上&#xff0c;不同VLAN就是处在不同网段&…

Jenkins - macOS 上安装

文章目录 关于 JenkinsmacOS 上安装 Jenkins方式一&#xff1a;brew方式二&#xff1a;tomcat Jenkins war 关于 Jenkins 官网上下载Jenkins并将其安装到持续集成服务器 https://jenkins.io/download/ macOS 上安装 Jenkins 现在本 macOS 上测试 https://www.jenkins.io/do…

HarmonyOS 应用开发——入门

首先当然是华为的官方文档了&#xff0c;要认真学习: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/start-overview-0000001478061421-V2 不想花时间看&#xff0c;可以看我下面总结的干货&#xff0c;哈哈 第一个问题&#xff1a;stage架构和fa架构的区…

MySql 导出导入(备份还原)

1&#xff0c;导出备份 要导出MySQL数据库中的数据&#xff0c;使用mysqldump命令。假设要导出名为mydatabase的数据库到名为backup.sql的文件中&#xff1a; mysqldump -u 用户名 -p 数据库名 > backup.sql 参数说明&#xff1a; -u mysql用户名称 -p 执行后会要求输入…

文献阅读:全皮层原位测序揭示了输入依赖区域的身份

文献介绍 「文献题目」 Whole-cortex in situ sequencing reveals input-dependent area identity 「研究团队」 Anthony M. Zador&#xff08;美国冷泉港实验室&#xff09; 「发表时间」 2024-04-24 「发表期刊」 Nature 「影响因子」 64.8 「DOI」 10.1038/s41586-024-0…

LeetCode39题: 组合总和(原创)

【题目描述】 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复…

回归预测 | Matlab实现NGO-ESN北方苍鹰算法优化回声状态网络多输入单输出回归预测

回归预测 | Matlab实现NGO-ESN北方苍鹰算法优化回声状态网络多输入单输出回归预测 目录 回归预测 | Matlab实现NGO-ESN北方苍鹰算法优化回声状态网络多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现NGO-ESN北方苍鹰算法优化回声状态网络…

C++(Qt)软件调试---crashpad捕获崩溃(19)

C(Qt)软件调试—crashpad捕获崩溃&#xff08;19&#xff09; 文章目录 C(Qt)软件调试---crashpad捕获崩溃&#xff08;19&#xff09;1、概述2、资源地址3、配置环境4、解决报错5、测试代码6、测试结果7、Qt中使用crashpad 更多精彩内容&#x1f449;个人内容分类汇总 &#x…

mysql 开启远程连接

登录到mysql mysql -uroot -p 打开mysql数据库并查询user表 use mysql; select user, host from user;更改需要远程连接数据库为任何ip 可以连接&#xff0c; 并刷新系统权限相关的表 update user set host% where hostlocalhost and userroot; flush privileges;

测评与广告双管齐下:敦煌网卖家如何结合自养号实现快速出单

敦煌网作为中国领先的B2B跨境电商平台&#xff0c;为卖家提供了广阔的市场和丰富的资源&#xff0c;但为何有些卖家却难以获得订单呢?下面的内容中&#xff0c;帮助卖家快速出单。 一、如何快速出单? 1、优化产品详情页&#xff1a;产品详情页是吸引买家下单的关键页面。卖…
最新文章