对返回引用函数的进一步解释

news2024/10/7 2:22:56
#include <iostream>
#include <string>
using namespace std;
class Box
{
public:
	Box(string name,int age):name(name),age(age){}
	string& getname()	//返回引用的函数
	{
		cout << "&name: " << (int)&name << endl;
		return this->name;
	}
	int& getage()		//返回引用的函数
	{
		cout << "&age: " << (int)&age << endl;
		return this->age;
	}
	void show()
	{
		cout << name << " " << age << endl;
	}
	void get_addr(Box &box1)
	{
		cout << "&box1: " << (int)&box1 << endl;
		cout << "&name: " << (int)&name << endl;
		cout << "&age: " << (int)&age << endl;
	}
protected:
	string name;
	int age;
};
int main()
{
	cout << "原始数据:" << endl;
	Box box1("李四", 30);
	box1.show();
	cout << endl;


//引用系列函数(可以这样理解:既返回了当前对象中的数据成员本身,又返回了数据成员的值,【总之可以通过返回引用修改对象的数据成员的值】)
	cout << "通过返回引用的函数进行修改当前对象的数据成员:" << endl;
	cout << "引用地址:" << endl;
	//修改当前对象中的全部数据成员的值
	box1.getname() = "张三";//返回的数据成员box1.name本身和其值【也即是box1.name="李四"】,然后对其进行赋值,也即相当于box1.name="张三"
	box1.getage() = 18;	//返回的是数据成员box1.age本身和其值【也即是box1.age=30】,然后对其进行赋值,也即相当于box1.age=18 
	box1.show();
	//修改当前对象中的指定数据成员的值
	box1.getage() = 99;
	box1.show();


//一般系列函数(和往常一样,返回的是只是当前对象中的值而已)(与max(1,2)......一样的)

	//cout << box1.getname() << endl;//(另外注意,string是变量,不要与C中的字符数组进行混淆)
	//cout << box1.getage() << endl;


//box1地址相关
	cout << endl;
	cout << "box1的相关地址:" << endl;
	box1.get_addr(box1);
	return 0;
}

//【通过返回函数的引用可以对当前对象进行修改】
//box1.getname() = "张三";//也即相当于box1.name="张三"
//其中getname是一个返回引用的函数,实际上返回的就是box1.name,然后给它赋值为“张三”!
//也即是通过引用改变了原来对象的数据!

//【作用】:
//通过返回引用的函数既可以对该对象的指定数据成员进行修改,也可以进行部分或全部修改!(对当前对象进行操作)
//其实上不必想的那么复杂,只需记住:通过返回引用可以修改当前对象的数据成员的值!

在这里插入图片描述

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

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

相关文章

Maven入职学习

一、什么是Maven&#xff1f; 概念&#xff1a; Maven是一种框架。它可以用作依赖管理工具、构建工具。 它可以管理jar包的规模、jar包的来源、jar包之间的依赖关系。 它的用途就是管理规模庞大的jar包&#xff0c;脱离IDE环境执行构建操作。 具体使用&#xff1a; 工作机…

Clickhouse 存储引擎

一、常用存储引擎分类 1.1 ReplacingMergeTree 这个引擎是在 MergeTree 的基础上&#xff0c;添加了”处理重复数据”的功能&#xff0c;该引擎和MergeTree的不同之处在于它会删除具有相同主键的重复项。 特点: 1使用ORDERBY排序键作为判断重复的唯一键 2.数据的去重只会在合并…

复习之selinux的管理

一、什么是selinux? SELinux&#xff0c;Security Enhanced Linux 的缩写&#xff0c;也就是安全强化的 Linux&#xff0c;是由美国国家安全局&#xff08;NSA&#xff09;联合其他安全机构&#xff08;比如 SCC 公司&#xff09;共同开发的&#xff0c;旨在增强传统 Linux 操…

x光下危险物品/违禁物品目标识别的模型训练与推理代码

前言 1.安检在公共场合的重要性不言而喻&#xff0c;保障群众人身安全是其首要任务。在各种场合&#xff0c;安检都是不可或缺的环节。x光安检机作为安检的重要工具&#xff0c;尽管其具有人工监控判断成像的特性&#xff0c;但是其局限性也十分明显。 为了解决这一局限性为出…

面试题:bind、call、apply 区别?如何实现一个 bind?

面试题&#xff1a;bind、call、apply 区别&#xff1f;如何实现一个 bind? 一、call()代码描述&#xff1a; 二、apply()代码描述&#xff1a; 三、bind()—最重要代码描述&#xff1a; 四、call、apply、bind 总结 一、call() 代码描述&#xff1a; 二、apply() 代码描述&am…

广州VR制作 | 利用VR元宇宙平台开展林地管理培训的优势

在林业领域&#xff0c;实地调查是获取准确数据和深入了解森林生态的重要手段。然而&#xff0c;传统的实地调查方法存在诸多问题&#xff0c;如时间成本高、人力物力投入大、安全风险高等。为了解决这些教学痛点&#xff0c;我们引入了虚拟现实(VR)技术&#xff0c;通过虚拟林…

PO模式在selenium自动化测试框架有什么好处

PO模式是在UI自动化测试过程当中使用非常频繁的一种设计模式&#xff0c;使用这种模式后&#xff0c;可以有效的提升代码的复用能力&#xff0c;并且让自动化测试代码维护起来更加方便。 PO模式的全称叫page object model&#xff08;POM&#xff09;&#xff0c;有时候叫做 p…

解读百胜中国2023年第二季度财报:聚焦下沉市场,扩店实力几何?

从全网玩梗的“肯德基疯狂星期四”文学&#xff0c;到大小朋友疯狂抢购的六一三丽鸥玩具联名&#xff0c;再到不久前爆火的必胜客原神联名活动&#xff0c;肯德基、必胜客这两大家喻户晓的快餐品牌&#xff0c;被不少新闻调侃为“顶流制造机”。而近日&#xff0c;这两大顶流背…

【c++进阶】--哈希

1.unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到 &#xff0c;即最差情况下 需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好的查询是&#xff0c;进行…

【Linux】五种IO模型

文章目录 1. IO基本概念2. 五种IO模型2.1 五个钓鱼的例子2.2 五种IO模型2.2.1 阻塞IO2.2.2 非阻塞IO2.2.3 信号驱动IO2.2.4 IO多路转接2.2.5 异步IO 1. IO基本概念 认识IO IO就是输入和输出&#xff0c;在冯诺依曼体系结构中&#xff0c;将数据从输入设备拷贝到内存就叫输入&am…

解决MAC M1处理器运行Android protoc时出现的错误

Protobuf是Google开发的一种新的结构化数据存储格式&#xff0c;一般用于结构化数据的序列化&#xff0c;也就是我们常说的数据序列化。这个序列化协议非常轻量级和高效&#xff0c;并且是跨平台的。目前&#xff0c;它支持多种主流语言&#xff0c;比传统的XML、JSON等方法更具…

【数模】主成分分析PCA

主成分分析(Principal Component Analysis,PCA)&#xff0c;是一种降维算法&#xff0c;它能将多个指标转换为少数几个主成分&#xff0c;这些主成分是原始变量的线性组合&#xff0c;且彼此之间互不相关&#xff0c;其能反映出原始数据的大部分信息。使用场景&#xff1a;一般…

详解Quest 2积分与奖励规则

7月28日&#xff0c;在万众期待中&#xff0c;Mysten Labs在Quest门户网站上宣布了Quest 2的到来。经过严密的筹划&#xff0c;本着真实、公平以及用户至上的原则&#xff0c;现在向大家介绍Quest 2的积分规则以及奖励规则。 温馨提示&#xff1a;第一轮Bullshark Quest是一次精…

SpringBoot+Vue实现软件工程课程在线考试系统

博主主页&#xff1a;一季春秋博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容&#xff1a;毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题…

利用appium抓取app中的信息

一、appium简介 二、appium环境安装 三、联调测试环境 四、利用appium自动控制移动设备并提取数据

mysql转sqlite3

在项目中需要将mysql迁移到sqlite3中&#xff0c;此时需要作数据转换 准备工作 下载mysql2sqlite转换工具 https://github.com/dumblob/mysql2sqlite/archive/refs/heads/master.zip 下载sqlite3 https://www.sqlite.org/download.html 转换 命令行中输入如下命令 1、cd …

6.6 实现卷积神经网络LeNet训练并预测手写体数字

模型架构 代码实现 import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(nn.Conv2d(1,6,kernel_size5,padding2),nn.Sigmoid(),#padding2补偿5x5卷积核导致的特征减少。nn.AvgPool2d(kernel_size2,stride2),nn.Conv2d(6,16,kernel_size5),nn.S…

[疑难杂症2023-007]multiprocessing.Process使用时遇到的几个棘手问题

本文由Markdown编辑器编辑完成。 1. 背景 近日&#xff0c;为了解决自己负责的一个组件&#xff0c;在处理大量数据时&#xff0c;由于内存释放不及时&#xff0c;而导致整个组件占用了较高的内存。 这主要是因为目前我们在使用python的一个采用多进程的框架——Celery. 关于…

解决Map修改key的问题

需求 现在返回json数据带有分页的数据&#xff0c;将返回data属性数据变更为content&#xff0c;数据不变&#xff0c;key发生变化 实现1&#xff0c;源数据比较复杂&#xff0c;组装数据比较麻烦 说明&#xff1a;如果使用这种方式完成需求&#xff0c;需要创建对象&#xff0…

搭建简易syslog日志中转服务器

在某种场景下&#xff0c;无法接入日志审计设备&#xff0c;本文提供一种方式&#xff0c;可通过搭建简易日志中转服务器&#xff0c;收集到该环境下的日志后&#xff0c;再将其导入日志审计设备中。 0x1 开启服务 rsyslog守护进程来自于当前的linux发布版本的预装模块&#x…