【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被隐式类型转换成0func(NULL); // func(0);return 0;
}
  • 所以出于清晰和安全的角度考虑,C++11中新增了nullptr,用于表示空指针

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

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

相关文章

用Python快速从深层嵌套 JSON 中找到特定的 Value

有时候&#xff0c;我们拿到一个JSON数据的时候&#xff0c;会难以看出其逻辑层次结构。 这时候就需要我们进行代码解析了。 代码&#xff1a; import jsondef find_json_value(data_json, value, path""):if isinstance(data_json, dict):for k, v in data_json.…

Web 应用程序性能测试核心步骤

通常大家做web 应用程序的时候会有哪些操作呢&#xff1f;今天就来看看常见的web 应用程序的常见操作。 Web 应用程序性能测试核心步骤 1&#xff1a;识别测试环境。确定物理测试环境和生产环境&#xff0c;以及测试团队可用的工具和资源。物理环境包括硬件、软件和网络配置。…

c语言单向链表

看如下代码&#xff0c;这是一个完整的可运行的c源文件&#xff0c;要注意的点&#xff1a; c语言程序运行不一定需要头文件NULL其实是 (void*)0&#xff0c;把指针赋值成(void*)0,就是防止程序员不想该指针被引用的时候被引用&#xff0c;引用地址为0的值程序会引起系统中断&…

PyQt6 QSpacerItem弹簧控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计46条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

00后卷王的自述,我难道真的很卷?

前言 前段时间去面试了一个公司&#xff0c;成功拿到了offer&#xff0c;薪资也从12k涨到了18k&#xff0c;对于工作都还没两年的我来说&#xff0c;还是比较满意的&#xff0c;毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王&#xff0c;感觉自己年轻&#xff…

自动化访客互动:提升网站效益与用户体验的关键优势

在激烈的市场竞争环境中&#xff0c;想抢占市场&#xff0c;获得收益并不容易。每一个订单的完成都要经过一定的销售周期&#xff0c;所以企业可以根据销售周期每个阶段的特点进行优化&#xff0c;留住客户。其中&#xff0c;企业可以在与客户在线互动的过程中&#xff0c;让互…

ShardingSphere-JDBC 和 ShardingSphere-Proxy,你选择哪一个

参考文章 总结&#xff1a; 只使用Java&#xff0c;ShardingSphere-JDBC更好有异构语言的话&#xff0c;ShardingSphere-Proxy 更好混用也挺香

小红书商品详情API:电商助力

一、引言 随着互联网的普及和电商行业的快速发展&#xff0c;消费者对于商品信息的获取方式也在不断变化。小红书作为一款以内容分享为主的社交电商平台&#xff0c;吸引了大量用户。为了满足用户对商品信息的快速获取需求&#xff0c;小红书提供了商品详情API接口。本文将探讨…

Web测试、APP测试常用技巧(错过你一定会后悔)

1. web元素定位七种方式 优先使用的6种 find_element_by_id (返回一个元素)find_element(s)_by_class_name (根据类名获取元素列表)find_element(s)_by_name (根据标签的name属性值返回包含标签对象元素的列表)find_element(s)_by_link_text (根据连接文本获取元素列表)find_…

linux环境安装可操作图库语言Gremlin的图框架HugeGraph

原创/朱季谦 若你还没接触过图数据库&#xff0c;可能看到这个概念时&#xff0c;会比较蒙蔽。 图是什么&#xff1f;图数据库又是什么&#xff1f; 首先&#xff0c;在数据结构中&#xff0c;图是一种由顶点&#xff08;vertex&#xff09;集合及顶点间关系集合组成的一种非…

常见数据结构

数据结构概述 数据结构是计算机底层存储、组织数据的方式&#xff0c;是指数据相互之间是以什么方式排列在一起的。 通常情况下&#xff0c;精心选择的数据结构可以带来更高的运行或者存储效率。 栈 栈数据结构的执行特点&#xff1a;后进先出&#xff0c;先进后出。 栈模型…

探索灵活性与可维护性的利器:策略(Strategy)模式详解

目录 ​编辑 1. 策略模式概述&#xff1a; 2. 主要角色&#xff1a; 3. 实例场景&#xff1a; 4. 具体实现步骤&#xff1a; 步骤一&#xff1a;定义策略接口 5. 使用策略模式的客户端代码&#xff1a; 总结&#xff1a; 我的其他博客 1. 策略模式概述&#xff1a; 策…

python【matplotlib】鼠标拖动滚动缩放坐标范围和拖动图例共存

背景 根据前面的博文&#xff1a; python【matplotlib】画图鼠标缩放拖动动态改变坐标轴范围 和Python【Matplotlib】图例可拖动改变位置 两个博文&#xff0c;博主考虑了一下&#xff0c;如何将两者的功能结合起来&#xff0c;让二者共存。 只需根据Python【Matplotlib】鼠标…

域名、DNS 和 IP是什么?网站搭建的必备知识,一文搞定

在正式进行WordPress站点搭建前&#xff0c;有一些最基础的知识是必备的&#xff0c;这篇文章会详细介绍给大家。 一、域名、DNS和IP的关系 域名、DNS和IP是互联网上的三个重要的概念&#xff0c;它们之间有着密切的联系&#xff0c;也影响着我们访问网站的方式和效果。接下来…

JNA实现JAVA调用C/C++动态库

1.JNA JNA全称Java Native Access&#xff0c;是一个建立在经典的JNI技术之上的Java开源框架&#xff08;https://github.com/twall/jna&#xff09;。JNA提供一组Java工具类用于在运行期动态访问系统本地库&#xff08;native library&#xff1a;如Window的dll&#xff09;而…

5.1 C++11强类型枚举

一、C枚举的缺陷 1.类型冲突 枚举值和类型都是全局可见的&#xff0c; 与正常C的namespace、类等都是格格不入的&#xff0c;并且还容易导致冲突。 enum Type { General, Light, Medium, Heavy }; enum Category { General, Pistol, MachineGun, Cannon }; 如果在相同作用域…

【CSS】用 CSS 写一个渐变色边框的输入框

Using_CSS_gradients MDN 多渐变色输入框&#xff0c;群友问了下&#xff0c;就试着写了下&#xff0c;看了看 css 渐变色 MDN 文档&#xff0c;其实很简单&#xff0c;代码记录下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta ch…

uniapp实现检查版本检测,更新

1.首先需要获取当前app的版本 const systemInfo uni.getSystemInfoSync();// 应用程序版本号// #ifdef APPme.version systemInfo.appWgtVersion;// #endif// #ifdef H5me.version systemInfo.appVersion;// #endif2.在获取到服务器保存的app版本 3.点击按钮验证版本号 //…

JS的箭头函数this:

箭头函数不会创建自己的this&#xff0c;它只会从自己的作用域链的上一层沿用this。 具体看实例&#xff1a; //以前&#xff1a;谁调用的这个函数 this就指向谁// console.log(this);//window// function fn(){// console.log(this);//window 因为这个函数也是window调用…

lwIP 细节之五:accept 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程&#xff0c;其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数&#xff0c;注册到协议栈&#xff0c;在适当的时候&#xff0c;由协议栈自动调用&#xff0c;所以称为回调。 注&#xff1a;除非特别说明&#xff0c;以下内…