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. #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. }
引用小结
引用其实就是起别名的用法,
左值引用,对左边的起别名,传入右值
右值引用,对右边的起别名,传入左值