bool与引用类型

news2024/9/23 7:20:50

bool与引用类型

bool类型

介绍与使用

bool(布尔类型)
大小:1个字节
返回值有两个:1(true),0(false)
#include<iostream>

using namespace std;

int main()
{
    bool a = false;
    bool b = true;

    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    system("pause");
    return 0;
}

bool类型的用途

1.作某功能的开关
2.做标记 -->查找类的操作
3.做函数返回值

引用类型

可以当做一个起别名的用法

#include<iostream>

using namespace std;

int main()
{
    int a = 1;
    int& b = a; //起别名,a 的别名为 b,
    //就跟一个人的小名一样,a 的小名是b, a就是b

    system("pause");
    return 0;
}

左值引用

  1. 当作函数参数,直接修改实参,防止拷贝木的产生

#include<iostream>

using namespace std;

void swap(int& a, int& b) //当作函数参数,直接修改实参
{
    int c = a;
    a = b;
    b = c;
}

int main()
{
    int a = 10;
    int b = 11;

    swap(a, b);

    cout << "a = " << a << endl <<  "b = " << b << endl;

    system("pause");
    return 0;

2.当做函数返回值,增加左值的使用

#include<iostream>

using namespace std;


int a = 1;
int b = 1;

int& mm()
{
    return a;
}

int MM()
{
    return b;

}

int main()
{
    mm() = 2;  //正确通过左值引用,可以进行修改
    MM() = 4; //错误,不能对左值进行修改

    system("pause");
    return 0;
}

右值引用

给右边的取别名

给常量起别名

1.用const 给常量起别名

#include<iostream>

using namespace std;

int main()
{
    const char* str = "温柔了岁月";
    const int& x = 11;

    system("pause");
    return 0;
}

但用const有一个局限性,那就是不能进行修改

2.所以一般采用第二种方法,右值引用来解决(&&)

#include<iostream>

using namespace std;

int main()
{
    const char* str = "温柔了岁月";
    const int& x = 11;

    
    int&& a = 11; //右值引用
    a = 22;  //修改值

    system("pause");
    return 0;
}

move()函数的应用

这里需要注意的是右值引用只能传入左值,不然就会出现如图所示的报错

这里就可以通过move()函数,将右值转化为左值

#include<iostream>

using namespace std;

void PrinDate(int&& a)
{
    a++; //右值引用可以
    cout << a << endl;
}

int main()
{
    int a = 3;
    PrinDate(move(a)); //右值引用只能传入左值,通过move()函数,将右值转化为左值
    
    system("pause");
    return 0;
}
#include<iostream>

using namespace std;

int main()
{
    int date = 100;
    int&& b = move(date);
    system("pause");
    return 0;
}

引用小结

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/372992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lighthouse组合Puppeteer检测页面

如上一篇文章lighthouse的介绍和基本使用方法结尾提到的一样&#xff0c;我们在实际使用Lighthouse检测页面性能时&#xff0c;通常需要一定的业务前置条件&#xff0c;比如最常见的登录操作、如果没有登录态就没有办法访问其他页面。再比如有一些页面是需要进行一系列的操作&a…

从编年史角度看大数据兴起

开源大数据编年史大数据发展的各阶段大数据诞生初期大数据百花齐放的发展之路追求性能的大数据成熟期大数据发展的各阶段 开源大数据的编年史的话&#xff0c;实际上分为三个阶段。一般来说它分为初期、发展期、成熟期。 初期就是大数据刚开始萌芽的一个阶段&#xff0c;它从…

java 8 中的实用技巧

1 判断2个对象是否相等Objects.equals(a, b)(1) 比较时&#xff0c; 若a 和 b 都是null, 则返回 true, 如果a 和 b 其中一个是null, 另一个不是null, 则返回false。注意&#xff1a;不会抛出空指针异常。(2) a 和 b 如果都是空值字符串&#xff1a;"", 则 a.equals(b…

深入浅出解析ChatGPT引领的科技浪潮【AI行研商业价值分析】

Rocky Ding写在前面 【AI行研&商业价值分析】栏目专注于分享AI行业中最新热点/风口的思考与判断。也欢迎大家提出宝贵的意见或优化ideas&#xff0c;一起交流学习&#x1f4aa; 大家好&#xff0c;我是Rocky。 2022年底&#xff0c;ChatGPT横空出世&#xff0c;火爆全网&a…

CXL互联标准简介及相关资料

毕设是实现CXL的type3扩展内存设备&#xff0c;因为CXL技术非常新&#xff0c;2019年推出&#xff0c;本专栏也是记录CXL的相关知识与一些浅薄的理解 文章目录CXL出现的背景CXL是什么其他互联总线介绍CXL胜出的原因CXL内容简介包含三种协议 CXL.io/cache/memory支持三种设备类型…

SQL注入原理及漏洞利用(入门级)

文章目录一、什么是SQL注入漏洞&#xff1f;二、 SQL查询语句三、SQL注入分类数字型&#xff08;整型&#xff09;注入字符型注入搜索型注入四、SQL注入漏洞形成原因一、什么是SQL注入漏洞&#xff1f; 攻击者利用Web应用程序对用户输入验证上的疏忽&#xff0c;在输入的数据中…

基于Istio的高级流量管理二(Envoy流量劫持、Istio架构、高级流量管理)

文章目录一、Envoy流量劫持机制&#xff08;Iptables规则流转&#xff09;1、流量出向劫持流程&#xff08;1&#xff09;envoy怎样劫持入向流量&#xff1f;&#xff08;2&#xff09;Envoy劫持到流量之后&#xff0c;干什么&#xff1f;&#xff08;查询目的地&#xff09;&a…

tess4j简单使用入门

tess4j下载 下载地址: https://sourceforge.net/projects/tess4j/ 不要直接下载,点击files,然后下载最新版 下载解压后放到指定的目录即可,这里放到d:\jar目录下 tess4j根目录: d:\jar\tess4j tess4j使用 把test4j项目目录中dist和lib目录下的所有jar包导入到需要的项目中…

【云原生】k8s 离线部署讲解和实战操作

文章目录一、概述二、前期准备1&#xff09;节点信息2&#xff09;修改主机名和配置hosts3&#xff09;配置ssh互信4&#xff09;时间同步5&#xff09;关闭防火墙6&#xff09;关闭 swap7&#xff09;禁用SELinux8&#xff09;允许 iptables 检查桥接流量三、开始部署1&#x…

【OC】块初识

Block简介 Blocks是C语言的扩充功能。可以用一句话来表示Blocks的扩充功能&#xff1a;带有自动变量的匿名函数。 匿名函数 所谓匿名函数就是不带有名称的函数。C语言的标准不允许存在这样的函数。例&#xff1a; int func(int count);它声明了名称为func的函数。下面的源代…

STM32 ROS控制器底层代码讲解

本文主要对控制器底层代码的整天架构进行讲解。控制器由两部分组成一部分是BootLoader,另一部分是APP&#xff1b;BootLoader主要用于固件升级&#xff0c;APP则作为应用程序。BootLoader的地址为:0x8000000~0x8008000App的地址为:0x8010000~0x8FFFFFF参数保存地址为&#xff1…

基本密码技术

AESAES取代DES&#xff0c;是一种对称加密技术&#xff0c;分为AES-128/192/256, 其分组长度固定为128b&#xff0c;若最后一个分组长度不够&#xff0c;需要补全至128b长度。所支持的秘钥长度分别为128b/192b/256b.分组密码模式AES是对明文进行分组之后逐块进行加密&#xff0…

2023年软考高级网络规划设计师

网络规划设计师是软考高级考试科目之一&#xff0c;也是比较难的科目&#xff0c;据官方数据统计网规每年的通过率很低&#xff0c;而且每年只有下半年11月份考一次&#xff0c;如果是直接裸考&#xff0c;估计很悬哦~ 但是你参加考试获得证书的过程就是一个学习网络规划系统知…

【python学习笔记】:SQL常用脚本(一)

1、行转列的用法PIVOT CREATE table test (id int,name nvarchar(20),quarter int,number int) insert into test values(1,N苹果,1,1000) insert into test values(1,N苹果,2,2000) insert into test values(1,N苹果,3,4000) insert into test values(1,N苹果,4,5000) insert…

本周大新闻|索尼PS VR2立项近7年;传腾讯将引进Quest 2

本周大新闻&#xff0c;AR方面&#xff0c;传立讯精密开发苹果初代AR头显&#xff0c;第二代低成本版将交给富士康&#xff1b;iOS 16.4代码曝光新的“计算设备”&#xff1b;EM3推出AR眼镜Stellar Pro&#xff1b;努比亚将在MWC2023推首款AR眼镜。VR方面&#xff0c;传闻腾讯引…

编辑器、论坛、评论列表图文混排的一些思路

好久没写帖子了&#xff0c;今天写一个吧 众所众知从用户那里拿到的数据直接innerHtml插入 有被xss攻击的风险&#xff0c;所以一般会转义,拿csdn编辑文章的来举个例子 通过前端转义 ‘>’后,传给后台&#xff1b;这里title没有用innerHtml而是文本所以不需要转义。 前端请…

SerenityOS 操作系统类 Unix 操作系统

创建于2018年的SerenityOS是一个类似Unix的操作系统&#xff0c;但是带有图形化界面&#xff0c;适合X86台式计算机&#xff0c;&#xff0c;其界面类似90 年代的Win98/NT。几乎由一个人完成额操作系统。这几天其Web浏览器通过了 Acid3 浏览器。 Kernel features 具有抢占式多…

计算机网络笔记、面试八股(四)—— TCP连接

本章目录4. TCP连接4.1 TCP报文段的首部格式4.2 TCP连接如何保证可靠4.3 ARQ协议4.3.1 停止等待ARQ协议4.3.1.1 无差错情况4.3.1.2 出现差错情况4.3.1.3 确认丢失和确认迟到4.3.2 连续ARQ协议4.3.2.1 流水线传输4.3.2.2 累积确认4.3.2.3 滑动窗口协议4.3.3 停止等待ARQ和连续AR…

java面试题-JVM内存结构

整体结构&#xff1a;1.说说JVM内存整体的结构&#xff1f;线程私有还是共享的&#xff1f;JVM&#xff08;Java Virtual Machine&#xff09;内存可以分为以下几个部分&#xff1a;程序计数器&#xff08;Program Counter Register&#xff09;&#xff1a;是线程私有的&#…

JUC并发编程(二)

一、过时方法 一些不推荐使用的方法已经过时&#xff0c;容易破坏同步代码块&#xff0c;使对象的锁得不到释放&#xff0c;进而造成线程死锁 二、守护线程 默认情况下&#xff0c;Java 进程需要等待所有线程都运行结束&#xff0c;才会结束。有一种特殊的线程叫做守护线程…