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版本太低不支持
2444 0
|
SQL 监控 关系型数据库
Binlog详解
Mysql binlog是二进制日志文件,用于记录mysql的数据更新或者潜在更新(比如DELETE语句执行删除而实际并没有符合条件的数据),在mysql主从复制中就是依靠的binlog。
2786 0
|
机器学习/深度学习 并行计算 算法
基于 PyTorch 的目标检测(YOLO实现)
基于 PyTorch 的目标检测(YOLO实现)
|
负载均衡 Java 开发者
Spring Cloud实战:构建分布式系统解决方案
Spring Cloud实战:构建分布式系统解决方案
|
监控 测试技术 数据库
探索微服务架构下的系统调优实践
【5月更文挑战第27天】在当今软件开发领域,微服务架构因其灵活性、可扩展性而受到青睐。然而,随之而来的是复杂性增加和性能调优的挑战。本文将深入探讨在微服务环境中进行系统调优的策略与实践,通过分析真实案例,揭示优化过程中的关键步骤和考虑因素,为追求高性能微服务系统的开发者提供参考。
139 1
|
Linux
centos7系统永久更改主机名(hostname)的几种方法
在使用centos7系统vps或服务器时,一般都会有一个主机名(hostname),都是主机开通时系统默认分配的。虽然主机名的用处不是很大,不更改也没啥事,但如果看着不顺眼的话,也是可以更改的。下面简单介绍下centos7永久更改主机名的简单方法。
27128 0
centos7系统永久更改主机名(hostname)的几种方法
|
存储 安全 关系型数据库
Mysql四种常见数据库引擎
四种mysql存储引擎 前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。
11564 0
|
设计模式 IDE Java
谈谈过度设计:因噎废食的陷阱
写软件和造楼房一样需要设计,但是和建筑行业严谨客观的设计规范不同,软件设计常常很主观,且容易引发争论。
2882 4
谈谈过度设计:因噎废食的陷阱
|
消息中间件 存储 搜索推荐
如何设计一个消息队列?
**如果让你来设计一个 MQ,该如何下手?需要考虑哪些问题?又有哪些技术挑战?** 对于 MQ 来说,不管是 RocketMQ、Kafka 还是其他消息队列,**它们的本质都是:一发一存一消费。**下面我们以这个本质作为根,一起由浅入深地聊聊 MQ。
1929 2
|
存储 NoSQL 关系型数据库
打破数据库领域模型的三范式
数据库领域模型的三范式是常用的设计原则,但在某些情况下,打破这些范式可以提高数据库的性能和响应速度。本文将讨论三范式的定义和优缺点,并提供一些打破范式的实例,以帮助读者更好地理解和应用这些概念。
329 0

热门文章

最新文章