bool与引用类型

简介: bool与引用类型

bool与引用类型

bool类型

介绍与使用

bool(布尔类型)大小:1个字节返回值有两个:1(true),0(false)
1. #include<iostream>
2. 
3. using namespace std;
4. 
5. int main()
6. {
7. bool a = false;
8. bool b = true;
9. 
10.     cout << "a = " << a << endl;
11.     cout << "b = " << b << endl;
12. 
13. system("pause");
14. return 0;
15. }

bool类型的用途

1.作某功能的开关2.做标记 -->查找类的操作3.做函数返回值

引用类型

可以当做一个起别名的用法

1. #include<iostream>
2. 
3. using namespace std;
4. 
5. int main()
6. {
7. int a = 1;
8. int& b = a; //起别名,a 的别名为 b,
9. //就跟一个人的小名一样,a 的小名是b, a就是b
10. 
11. system("pause");
12. return 0;
13. }

左值引用

  1. 当作函数参数,直接修改实参,防止拷贝木的产生
1. #include<iostream>
2. 
3. using namespace std;
4. 
5. void swap(int& a, int& b) //当作函数参数,直接修改实参
6. {
7. int c = a;
8.     a = b;
9.     b = c;
10. }
11. 
12. int main()
13. {
14. int a = 10;
15. int b = 11;
16. 
17. swap(a, b);
18. 
19.     cout << "a = " << a << endl <<  "b = " << b << endl;
20. 
21. system("pause");
22. return 0;

2.当做函数返回值,增加左值的使用

1. #include<iostream>
2. 
3. using namespace std;
4. 
5. 
6. int a = 1;
7. int b = 1;
8. 
9. int& mm()
10. {
11. return a;
12. }
13. 
14. int MM()
15. {
16. return b;
17. 
18. }
19. 
20. int main()
21. {
22. mm() = 2;  //正确通过左值引用,可以进行修改
23. MM() = 4; //错误,不能对左值进行修改
24. 
25. system("pause");
26. return 0;
27. }

右值引用

给右边的取别名

给常量起别名

1.用const 给常量起别名

1. #include<iostream>
2. 
3. using namespace std;
4. 
5. int main()
6. {
7. const char* str = "温柔了岁月";
8. const int& x = 11;
9. 
10. system("pause");
11. return 0;
12. }

但用const有一个局限性,那就是不能进行修改

2.所以一般采用第二种方法,右值引用来解决(&&)

1. #include<iostream>
2. 
3. using namespace std;
4. 
5. int main()
6. {
7. const char* str = "温柔了岁月";
8. const int& x = 11;
9. 
10. 
11. int&& a = 11; //右值引用
12.     a = 22;  //修改值
13. 
14. system("pause");
15. return 0;
16. }

move()函数的应用

这里需要注意的是右值引用只能传入左值,不然就会出现如图所示的报错

这里就可以通过move()函数,将右值转化为左值

1. #include<iostream>
2. 
3. using namespace std;
4. 
5. void PrinDate(int&& a)
6. {
7.     a++; //右值引用可以
8.     cout << a << endl;
9. }
10. 
11. int main()
12. {
13. int a = 3;
14. PrinDate(move(a)); //右值引用只能传入左值,通过move()函数,将右值转化为左值
15. 
16. system("pause");
17. return 0;
18. }
1. #include<iostream>
2. 
3. using namespace std;
4. 
5. int main()
6. {
7. int date = 100;
8. int&& b = move(date);
9. system("pause");
10. return 0;
11. }

引用小结

引用其实就是起别名的用法,

左值引用,对左边的起别名,传入右值

右值引用,对右边的起别名,传入左值

相关文章
|
缓存 IDE 安全
基准测试神器JMH —— 详解36个官方例子
基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。而JMH是一个用来构建,运行,分析Java或其他运行在JVM之上的语言的 纳秒/微秒/毫秒/宏观 级别基准测试的工具。
2951 1
基准测试神器JMH —— 详解36个官方例子
|
JavaScript 前端开发 应用服务中间件
【超详细!】vue+koa+nginx前后端分离开发项目上线部署到云服务器
1、项目介绍 本项目是vue+koa前后端分离开发的手机商城项目,先贴一下项目的目录,我们主要就是要部署dist和server这两个文件夹
1535 0
【超详细!】vue+koa+nginx前后端分离开发项目上线部署到云服务器
|
前端开发 Java 关系型数据库
最好用的七大顶级 API 接口测试工具
现在 API 接口已经成为软件开发重要的组成部分,由于 API 并没有 GUI 图形界面,无法直观的对接口进行测试,所以对于前后端开发来说,找到一套趁手的工具对 API 接口进行测试,了解开发的程序是否符合预期十分重要。面对批量的 API,手动测试变得非常低效,自动化 API 接口测试工具,帮我们提高测试效率的同时,更能帮我们保证程序的稳定和安全性。
4779 0
最好用的七大顶级 API 接口测试工具
|
2月前
|
人工智能 自然语言处理 安全
标书AI工具使用避坑:大模型原生痛点背后的合规风险与注意事项
AI标书工具虽提升效率,但大模型固有缺陷——幻觉编造、行业知识不足、长文理解偏差、数据外泄风险——在强监管招投标中易引发弄虚作假、废标、串标嫌疑等五大合规风险。须优选垂直AI工具,坚持“AI生成+人工终审”,严控数据安全与规则同步,方能真正提效避险。
|
10月前
|
网络协议 安全 数据挖掘
阿里云服务器九代实例c9i/g9i/r9i与c9a/g9a/r9a对比,性能、价格、适用场景对比与选择参考
目前在阿里云的活动中,除了入门级的轻量应用服务器和经济型e实例,主打高性价比的通用算力型实例云服务器之外,对于需要高性能云服务器的用户,可选择活动内的九代云服务器c9i/g9i/r9i实例和c9a/g9a/r9a实例,本文为大家介绍c9i/g9i/r9i实例和c9a/g9a/r9a实例的架构、处理器、适用场景与价格,以供大家对比和选择参考。
1832 9
|
7月前
|
人工智能 自然语言处理 Linux
【零基础入门】OpenClaw一键秒级部署攻略,小白也能轻松上手!
本文专为AI新手打造,用通俗语言+分步图解,手把手教你零基础部署OpenClaw——一款能“听懂人话、自动干活”的开源AI数字员工。支持云端(阿里云一键9.9元/月)和本地(鼠标+复制粘贴)两种傻瓜式部署,无需代码、不碰环境配置,轻松拥有7×24小时在线的AI助手!
939 3
|
7月前
|
人工智能 自然语言处理 监控
企业级Agent解决方案:以AgentOne为核心的数智化实践
2026年,阿里云瓴羊推出企业级全域协同Agent方案:以AgentOne为智能中枢,融合Dataphin(数据治理)、Quick Audience(智能营销)、Quick Service(智能服务)与Quick BI“智能小Q”(敏捷分析),打通“感知—决策—执行—反馈”全链路,破解数据孤岛、工具断裂、闭环缺失难题,驱动企业从数字化迈向数智化跃迁。(239字)
|
10月前
|
设计模式 人工智能 JavaScript
用Cursor重构烂代码的真实案例
上周三接手一个1200行“烂代码”JS文件,变量名混乱、逻辑嵌套深、功能混杂。借助AI工具Cursor分析坏味道、提取常量、拆解函数、重构条件判断,两天完成重构:代码从1200行拆为6个清晰模块,函数平均长度降至22行,嵌套从8层减至3层。加新功能不再胆战心惊。重构关键:先理解再动手,小步测试,善用AI辅助但不盲信。
|
存储 Java 开发者
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
本文详细介绍了 Java 中 `toString()` 方法的重写技巧及其重要
1097 10
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
|
存储 安全 Java
Java 基础篇必背综合知识点全面总结
本文总结了Java基础篇的核心知识点,涵盖Java特性、JDK与JRE、数据类型与运算符、流程控制语句、面向对象编程(类与对象、封装、继承、多态)、常用类库(java.lang、java.util、java.io)等内容。同时,还介绍了字符串处理、Servlet隐式对象及请求转发与重定向等重要概念。通过学习这些基础知识,可为深入掌握Java高级特性和实际开发打下坚实基础。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
583 0

热门文章

最新文章