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

引用小结

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

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

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

相关文章
|
4月前
|
Python
bool(布尔类型)
【7月更文挑战第1天】bool(布尔类型)。
80 1
|
6月前
|
算法 测试技术 编译器
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean(二 )
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean
140 0
|
6月前
|
程序员 编译器 C语言
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean(一)
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean
525 0
|
6月前
|
缓存 Java
equal 和 == 在对象、变量类型下的不同情况
equal 和 == 在对象、变量类型下的不同情况
33 0
|
存储 Java
基本类型、包装类型、引用类型、String等作为实参传递后值会不会改变?
基本类型、包装类型、String类型作为参数传递之后,在方法里面修改他们的值,原值不会改变!引用类型不一定,要看是怎么修改它的。
108 0
|
C语言 C++
C++ bool 类型
C++ bool 类型
86 0
C#由Dictionary赋值引发的对引用类型使用的思考
C#由Dictionary赋值引发的对引用类型使用的思考
|
Dart
Dart之赋值运算符(针对bool类型)
Dart之赋值运算符(针对bool类型)
69 0
Dart之赋值运算符(针对bool类型)