【C++11特性篇】盘点C++11中三种简化声明的方式【auto】【decltype】【nullptr】(3)

前言

大家好吖,欢迎来到 YY 滴C++系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

目录

  • 一.auto&范围for
  • 二.decltype——类型相关
    • 【1】typeid()——只能看(打印)类型,但不能用
    • 【2】decltype——推出对象的类型后:(1)再定义变量(2)或者作为模板实参
  • 三.nullptr——表示空指针

一.auto&范围for

  • 在C++98中auto是一个存储类型 的说明符,表明变量是局部自动存储类型 ,但是局部域中定义局部的变量默认就是自动存储类型,所以auto就没什么价值了。
  • C++11中废弃auto原来的用法,将其用于实现自动类型推断。这样要求必须进行显示初始化 ,让编译器将定义对象的类型设置为初始化值的类型。
  • 在C++中常与【范围for】搭配使用
int main()
{
	int i = 10;
	auto p = &i;
	auto pf = malloc;

	//auto x; 不能单独用
}
int main()
{
    vector<int> v1 = { 1,2,3,4,54 };
    for (auto e : v2)//范围for遍历
    {
        cout << e << " ";
    }
    cout << endl;
}

二.decltype——类型相关

【1】typeid()——只能看(打印)类型,但不能用

  • typeid 推出可以推出参数是什么类型,但是只能看不能用
  • typeid(pf).name()
int main()
{
    int i = 10;
    auto p = &i;
    auto pf = malloc;

    cout << typeid(p).name() << endl;
    cout << typeid(pf).name() << endl;
}

【2】decltype——推出对象的类型后:(1)再定义变量(2)或者作为模板实参

  • 关键字decltype将变量的类型声明为表达式指定的类型
    有以下两种主要用法:
  1. 单纯先定义一个变量出现
  2. 作为模板实参
int main()
{
    auto pf = malloc;
    auto pf1 = pf;

    // decltype推出对象的类型,再定义变量,或者作为模板实参
    
    // 单纯先定义一个变量出现
    decltype(pf) pf2;
    //作为模板实参
    B<decltype(pf)> bb1;
    //作为模板实参
    const int x = 1;
    double y = 2.2;
    B<decltype(x* y)> bb2;
}

三.nullptr——表示空指针

  • 由于C++中NULL被定义成字面量0,因为0既能指针常量,又能表示整形常量。 这样就可能回带来一些问题,比如下图所示
int main()
{
	int* p = NULL; // int* p = 0;             NULL被隐式类型转换成0
	func(NULL); // func(0);

	return 0;
}
  • 所以出于清晰和安全的角度考虑,C++11中新增了nullptr,用于表示空指针

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LVS负载均衡群集 DR模式

目录 1.LVS LVS调度器用的调度方法 固定调度算法 动态调度算法 LVS的工作模式及其工作过程 1、NAT模式&#xff08;VS-NAT&#xff09; 2、直接路由模式&#xff08;VS-DR&#xff09; 3、IP隧道模式&#xff08;VS-TUN&#xff09; 2.DR模式LVS负载均衡群集 LVS-DR模…

掌握Guava字符处理工具:让你的代码更易读、高效

推荐语 请允许我自夸一下&#xff0c;这确实是一篇精彩的技术文章&#xff0c;它深入介绍了Guava类库中强大的字符串处理工具。通过本文&#xff0c;你将了解如何巧妙运用这些工具来简化字符串操作、提高代码可读性和性能。不论是字符串拼接、分割、替换还是正则表达式匹配&am…

IT 人员与加密程序:如何战胜病毒

&#x1f510; 加密程序是攻击者在成功攻击组织时使用最多的恶意软件类型。它们通常会发送到一个庞大的电子邮件地址数据库&#xff0c;看起来像 Word 或 Excel 文档或 PDF 文件。 想象一下&#xff0c;你是会计部门的一名员工。这种格式的文件在电子文档管理系统中被广泛使用…

心理测试网站源码,知己心理React心理健康测试

源码介绍 React心理健康测试网站源码&#xff0c;帮助需要的人更好地了解自已的心理健康状态和人格特征。 React可以在Vite中启用HMR&#xff0c;并且包含了几人EsLint规则。只需要使用react antd-mobile即可 轻松部署完成。

美团赚钱更难了,Q3核心业务利润率下降2%,市值一年缩水近6000亿

从“买菜”卷向“超市”&#xff0c;成立5年的美团买菜更名为“小象超市”。 就在更名公告发布的前一天&#xff0c;美团公布了2023年三季报&#xff0c;尽管三季度营收净利双增长&#xff0c;但其股价却呈相反趋势。 三季报发布次日(11月29日)&#xff0c;美团港股股价单日跌…

离线云渲染有什么好用的平台?离线云渲染好用吗?

云渲染是一种在云端计算平台上执行的3D渲染任务处理方式&#xff0c;让CG制作者不必依靠本地硬件的计算力。它与传统的离线渲染有着相似之处——都不需要即时生成渲染结果&#xff0c;并且可能需要等待一段时间才能获取最终图像。不过&#xff0c;云渲染利用了云计算提供的分布…

外包干了3年,技术退步明显。。。

前言 简单说下我的情况吧&#xff01;普通本科的科班生&#xff0c;19年的时候通过校招进了一家小自研&#xff0c;工资还凑合&#xff0c;在里面带了一年多&#xff0c;公司没了&#xff0c;疫情期间找工作很麻烦&#xff0c;后面就开始自己近3年的外包生涯&#xff0c;这三年…

讯飞星火大模型api调用

讯飞星火大模型&#xff0c;通过websocket方式通信传递协议要求的报文&#xff0c;然后将流式返回的报文拼接为完整的响应内容&#xff0c;status2时是最后一条消息。因为是websocket方式所以是异步响应的&#xff0c;如果想要同步需要使用CountDownLatch控制下线程等待最后一条…

57.Go操作ES(官方提供github.com/elastic/go-elasticsearch库)

文章目录 一、简介1、安装依赖2、导入依赖3、连接 ES 二、操作索引三、model定义四、操作文档1、创建文档2、根据文档唯一ID获取指定索引下的文档3、检索 document1、 检索全部文档2、 模糊条件检索3、聚合检索 4、更新文档5、删除文档6、文档操作完整代码 代码地址&#xff1a…

数据结构与算法之美学习笔记:36 | AC自动机:如何用多模式串匹配实现敏感词过滤功能?

目录 前言基于单模式串和 Trie 树实现的敏感词过滤经典的多模式串匹配算法&#xff1a;AC 自动机解答开篇内容小结 前言 本节课程思维导图&#xff1a; 很多支持用户发表文本内容的网站&#xff0c;比如 BBS&#xff0c;大都会有敏感词过滤功能&#xff0c;用来过滤掉用户输入…

论文阅读:PointCLIP V2: Prompting CLIP and GPT for Powerful3D Open-world Learning

https://arxiv.org/abs/2211.11682 0 Abstract 大规模的预训练模型在视觉和语言任务的开放世界中都表现出了良好的表现。然而&#xff0c;它们在三维点云上的传输能力仍然有限&#xff0c;仅局限于分类任务。在本文中&#xff0c;我们首先协作CLIP和GPT成为一个统一的3D开放世…

使用 TensorFlow 创建生产级机器学习模型(基于数据流编程的符号数学系统)——学习笔记

资源出处&#xff1a;初学者的 TensorFlow 2.0 教程 | TensorFlow Core (google.cn) 前言 对于新框架的学习&#xff0c;阅读官方文档是一种非常有效的方法。官方文档通常提供了关于框架的详细信息、使用方法和示例代码&#xff0c;可以帮助你快速了解和掌握框架的使用。 如…

关于 Redis 与传统关系型数据库的选择

当需要为你的应用程序选择合适的数据库时&#xff0c;选择何种数据库通常取决于你项目的特定要求。Redis 是一种高性能的内存数据存储&#xff0c;而 MySQL 等传统关系型数据库也各自具有自己的优势和劣势。在本期文章中&#xff0c;我们将探讨在 Redis 和传统关系型数据库之间…

C++面向对象(OOP)编程-运算符重载

本文主要介绍C面向对象编程中的多态的手段之一运算符重载&#xff0c;讲清运算符重载的本质&#xff0c;以及通过代码实现一些常用的运算符重载。 目录 1 运算符重载的本质 2 运算符重载格式 3 运算符重载分类 3.1 重载为类的成员函数 3.1.1 双目运算符重载 3.1.2 单目运…

Faulhaber 2.5代运动控制系统 25mNm/13W

2.5代控制系统&#xff1b; PWM输出&#xff1b; 四象限控制带&#xff1b; RS232或CANopen通信接口&#xff1b; 2250_BX4_CxD 选件&#xff0c;电缆和连接信息&#xff1a; 适配部件&#xff1a;

Java-File类与IO流(1)

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

在4*4的平面上计算2a1+1+1

0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 在4*4的平面上有2个点&#xff0c;保持2a1的结构&#xff0c;然后向剩余的14个格子里随机扔2个石子。 共有14*13/291种可能 1 - - - 2 - - - 3 - - 1 4 - - - 1 1 - 1 1 - - - - - - - 1 - - …

Python个人代码随笔(观看无益,请跳过)

异常抛错&#xff1a;一般来说&#xff0c;在程序中&#xff0c;遇到异常时&#xff0c;会从这一层逐层往外抛错&#xff0c;一直抛到最外层&#xff0c;由最外层把错误显示在用户终端。 try:raise ValueError("A value error...") except ValueError:print("V…

IS-IS原理与配置3

IS-IS原理与配置 • IS-IS&#xff08;Intermediate System to Intermediate System&#xff0c;中间系统到中间系统&#xff09;是ISO &#xff08;International Organization for Standardization&#xff0c;国际标准化组织&#xff09;为它的CLNP &#xff08;ConnectionL…

FGSM、PGD、BIM对抗攻击算法实现

本篇文章是博主在AI、无人机、强化学习等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在AI学…