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

引用小结

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

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

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

相关文章
|
弹性计算 负载均衡 关系型数据库
阿里云产品近期优惠
阿里云提供多种售卖模式,包括按量付费、按量付费+资源包/节省计划及包年包月。权益中心为不同客户提供丰富优惠:飞天免费试用计划、99实例/计划、初创企业上云补贴及高校师生专属优惠。具体方案详询阿里云官网权益中心。各类优惠活动的具体条件与折扣力度各异,用户可根据自身需求在阿里云权益中心查看并领取相应权益。
|
并行计算 PyTorch Linux
幸福的烦恼:显卡算力太高而pytorch版本太低不支持
幸福的烦恼:显卡算力太高而pytorch版本太低不支持
3312 0
|
机器学习/深度学习 并行计算 算法
基于 PyTorch 的目标检测(YOLO实现)
基于 PyTorch 的目标检测(YOLO实现)
|
9月前
|
机器学习/深度学习 运维 测试技术
“思考更长时间”而非“模型更大”是提升模型在复杂软件工程任务中表现的有效途径 | 学术研究系列
本研究成功展示了通过统一的测试时计算(TTS)扩展框架,可以显著增强个人可部署的开源 SWE Agent 的代码推理和问题解决能力。我们证明了“思考更长时间”(增加推理计算)而非“模型更大”(增加参数)是提升模型在复杂软件工程任务中表现的有效途径。这项工作为在资源受限环境下(如私有部署)使用和发展高性能 SWE Agent 开辟了新的可能性。
|
负载均衡 监控 安全
Wi-Fi漫游深入解析:确保设备连接的有效策略
Wi-Fi漫游深入解析:确保设备连接的有效策略
1674 9
|
算法 调度
贪心算法基本概念与应用场景
尽管贪心算法在许多问题中都非常有效,但它并不总是会产生最优解。因此,在应用贪心算法前,重要的是先分析问题是否适合采用贪心策略。一些问题可能需要通过动态规划或回溯等其他算法来解决,以找到确切的全局最优解。
519 1
|
存储 弹性计算 开发工具
阿里云服务器搭建好
本文详细介绍了在阿里云服务器上成功运行代码的全过程。从创建阿里云账号、选择与购买服务器开始,继而指导您安装操作系统、Python环境及Git,并设置代码仓库,上传代码。随后,文章还解释了如何配置环境变量以确保代码顺利运行,以及利用print语句和调试工具进行代码调试的方法。遵循这些步骤,即使复杂的部署流程也能轻松掌握。
211 5
|
传感器 人工智能 物联网
柔性电子技术:可穿戴设备与智能生活的未来
【9月更文挑战第14天】柔性电子技术作为一种新兴且充满潜力的技术,正逐步成为连接可穿戴设备与智能生活的桥梁。它以其独特的灵活性和适应性,为我们的生活带来了更多的可能性和便捷性。尽管目前仍面临诸多挑战,但随着科技的不断进步和创新的推动,柔性电子技术必将迎来更加美好的未来。
|
机器学习/深度学习 人工智能 自然语言处理
深入探讨人工智能:技术发展与应用前景
【10月更文挑战第8天】深入探讨人工智能:技术发展与应用前景
380 0