C++ 引用类型 References入门
int a = 10;
int &b = a;
以上声明b是a的引用,如果a或者b的值发生改变,另外一个也同时改变。
可以通过以下代码来验证:
a = 20;
assert(a == b);
全部代码:
#include <iostream>
#include <assert.h>
using namespace std;void swap(int& i , int& j) {int tmp = i;i = j;j = tmp;
}int main() {int a = 10;int &b = a;assert(a == b);a = 20;assert(a == b);int i = 10;int j = 20;swap(i, j);assert(i == 20);assert(j == 10);return 0;
}
在C++中,引用就是给一个变量起了一个别名,引用和被引用的量实际指向的都是同一个值。
以下我们通过代码来验证:
#include <iostream>
#include <assert.h>
using namespace std;class A03 {public:void run() {cout << "this:" << this << endl;}
};void say(A03 a03) {a03.run();
}int main() {A03 a;a.run();say(a);return 0;
}
运行run函数会打印当前对象的地址,我们会发现a.run()和say函数中打印的值是不一样的:
address:0x7fff1bb15217
address:0x7fff1bb151ff
如果我们把 say 修改为 :
void say(A03& a03) {a03.run();
}
再运行发现每次打印值都是一样的:
address:0x7ffc36a1f2d7
address:0x7ffc36a1f2d7
证明了上述说法是正确的。
C++ 引用类型 References入门相关推荐
- DFPlayer Mini单片机-让你的Arduino Uno会唱歌
Introduction DFPlayer Mini是一款MP3模块,可以直接接驳扬声器.模块配合供电电池.扬声器.按键可以单独使用,可作为Arduino UNO的一个模块. 这里主要配合Uno讲解使 ...
- Java-JVM虚拟机内存垃圾回收机制gc入门:引用类型,对象标记算法,回收算法,常见的 garbage collector
文章目录 GC的优缺点 引用的四种类型 对象标记算法 引用计数法 可达性分析法 回收算法 标记-清除算法(Mark-Sweep) 复制算法 标记-整理算法(Mark-Compact) 分代收集算法 常 ...
- envi 文件 生成mat_JVM 内存分析工具 MAT 的深度讲解与实践——入门篇
1. MAT 工具简介 MAT(全名:Memory Analyzer Tool),是一款快速便捷且功能强大丰富的 JVM 堆内存离线分析工具.其通过展现 JVM 异常时所记录的运行时堆转储快照(Hea ...
- 【Mybatis从入门到实战教程】第一章 Mybatis 入门
一.Mybatis 入门 1.1 什么是MyBatis MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了goo ...
- 京东必考JVM 问题诊断快速入门
JVM 问题诊断快速入门 JVM 全称为 Java Virtual Machine,翻译为中文 "Java 虚拟机".本文中的JVM主要指 Oracle 公司的 HotSpot V ...
- 万字 MyBatis 带你从入门到精通!!!
文章目录 MyBatis 1. 入门使用 1.1 导入相关 Maven 依赖 1.2 创建并配置核心文件 1.3 编写 MyBatis 工具类 1.4 编写实体类 1.5 编写实体类对应的 Mappe ...
- C++11中rvalue references的使用
Rvalue references are a feature of C++ that was added with the C++11 standard. The syntax of an rval ...
- json vue 对象转数组_vue 基础入门(一)修改
vue基础入门(一) 1. 什么是vue Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标 ...
- tcp reno_如何使用称为Reno Expo的简单入门工具包构建全栈应用程序
tcp reno Building any new project from scratch can be intimidating. There's a lot to decide before y ...
最新文章
- python操作word文档(python-docx)
- php获取目录文件 排序输出,php实现对文件夹目录中的文件进行排序的方法
- 03-25实验一、命令解释程序的编写
- Gitlab代码托管服务器安装
- MySql取得日期(前一天、某一天)
- C语言srand((unsigned)time(NULL))…
- 練習重繪TreeView控件
- 给萌新HTML5 入门指南
- android 将.txt文件转化为.db并使用raw下的数据文件
- android studio 工程rebuild没反应,Andriod Studio Clear Project或Rebuild Project出错
- 《洞见》罗伯特·赖特
- 麻辣香锅(Spicy Hot Pot)浏览器劫持病毒应急方法
- EasyTouch插件是否还在使用?
- access和wps哪个一样_同是办公软件,wps跟office有什么区别
- drcom上网登录窗不弹出_无线网络连接后不能弹出浏览器登录页面是怎么回事?
- python代码分享(代码:多功能整合件【有摩根密码】/西普大陆/超级对战/宝藏)(2)
- 快手小店通效果好吗?
- 国外长高书籍内有详细锻炼方法
- CEFSharp 浏览器控件截图空白的解决方法
- IBMMQ的使用总结
热门文章
- C语言疑难点汇总解析
- lc谐振计算机网络,LC谐振网络工作模式分析
- Nodejs之Express框架
- 基于Blinker ESP8266 远程电压电流、功率计、温湿度计、ADC接口测温、温控风扇、低电压保护、低压报警功能。用来监测我的太阳能充电。SSD1306可轮番显示电压信息和温度信息。APP图表
- python因子分析 ic值 函数_Python——因子分析(KMO检验和Bartlett's球形检验)
- HuggingFace简明教程
- 我常用的两个翻译神器,程序员必备.
- 计算机导论课后总结四
- 不用密码解密压缩文件(CRC32算法)
- 一、Git介绍、以及原理