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. }

引用小结

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

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

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

相关文章
|
并行计算 PyTorch Linux
幸福的烦恼:显卡算力太高而pytorch版本太低不支持
幸福的烦恼:显卡算力太高而pytorch版本太低不支持
3472 0
|
SQL 安全 网络协议
常用和不常用端口一览表收藏
大家在学习计算机的时候,对于最常用的几个端口比如80端口肯定有很深的印象,但是对于其他一些不是那么常用的端口可能就没那么了解。所以,在一些使用频率相对较高的端口上,很容易会引发一些由于陌生而出现的错误,或者被黑客利用某些端口进行入侵。
4589 0
|
8月前
|
人工智能 供应链 安全
获国际权威机构认可!龙蜥社区通过 OpenChain ISO/IEC 5230 认证
龙蜥社区在开源合规管理上的能力获得了国际权威机构的认可。
|
机器学习/深度学习 并行计算 算法
基于 PyTorch 的目标检测(YOLO实现)
基于 PyTorch 的目标检测(YOLO实现)
|
Linux
centos7系统永久更改主机名(hostname)的几种方法
在使用centos7系统vps或服务器时,一般都会有一个主机名(hostname),都是主机开通时系统默认分配的。虽然主机名的用处不是很大,不更改也没啥事,但如果看着不顺眼的话,也是可以更改的。下面简单介绍下centos7永久更改主机名的简单方法。
27617 0
centos7系统永久更改主机名(hostname)的几种方法
|
编译器 Linux 程序员
GNU C 扩展语法:关键字__attribute__ 使用
GNU C 扩展语法:关键字__attribute__ 使用
1386 0
|
iOS开发
iOS 左滑编辑、长按拖动排序
iOS 左滑编辑、长按拖动排序
1111 0
iOS 左滑编辑、长按拖动排序
|
运维 监控 中间件
运维自动化之监控告警平台
Saturn平台可以解决多种监控平台产生的报警统一管控,类似监控中间件的功能,监控平台产生的告警发送给saturn, 通过saturn统一查询分析报警、控制报警风暴、自定义报警发送渠道(钉钉、电话告警),saturn还支持对收集到ES、云厂商日志服务中的业务日志检索并报警, saturn内置了中通天鸿呼叫中心免费1000条语音告警功能。
1588 0
运维自动化之监控告警平台
|
小程序 视频直播 API
接入微信小程序直播
小程序直播组件是微信给开发者提供的实时视频直播工具,可以帮助开发者快速通过小程序向用户提供优质的直播内容,在小程序内流畅完成购买交易闭环,提升转化率;小程序直播组件包括观众端、主播端及后台管理端,其中观众端提供拉流、实时互动、订阅提醒、商品购买等能力,主播端提供开播、推流、音视频效果优化等能力,后台管理端则负责直播房间、商品货架以及营销活动配置等。
855 0
接入微信小程序直播
|
缓存 监控 Unix
.NET Core 跨平台资源监控库及dotnet tool小工具
.NET Core 跨平台资源监控库及dotnet tool小工具
729 0
.NET Core 跨平台资源监控库及dotnet tool小工具