| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 【学习笔记】【C++11新特性】 -> 正文阅读 |
|
[C++知识库]【学习笔记】【C++11新特性】 |
nullptr替代 NULL传统C++会把NULL、0视为同一种东西,主要取决于编译器如何定义NULL,有些编译器会将NULL定义为((void*)0),有些则会定义为0。(在C语言中,NULL被定义为(void*)0,而在C++语言中,NULL则被定义为整数)但是在《C++ Primer 5th》这本书中P49提到:NULL是预处理变量,在头文件cstdlib中定义,它的值就是0。 C++不允许直接将 void* 隐式转换为其他类型,但是如果NULL被定义成 ((void*)0),那么当编译char * ch=NULL时,NULL只好被定义成0。从而导致C++中重载混乱
对于这两个函数来说,如果 NULL 又被定义为了 0 那么 foo(NULL); 这个语句将会去调用 foo(int),从而引发错误。 为了解决这个问题,C++11引入了nullptr关键字,专门来区分空指针,0的问题。 nullptr 的类型为 nullptr_t,能够隐式的转换为任何指针或成员指针的类型,也能和他们进行相等或者不等的比较。
但是,nullptr同样存在一定的问题
结果: 如果将此行注释,则 类型推导C++11 引入了 auto 和 decltype 这两个关键字实现了类型推导,让编译器来进行判断变量的类型。 autoauto 让编译器通过初始值来推算变量的类型。显然,auto定义的变量必须有初始值。 注意:
输出: decltype有的时候我们还会遇到这种情况,我们希望从表达式中推断出要定义变量的类型,但却不想用表达式的值去初始化变量。还有可能是函数的返回类型为某表达式的值类型。在这些时候auto显得就无力了,所以C++11又引入了第二种类型说明符decltype,它的作用是选择并返回操作数的数据类型。在此过程中,编译器只是分析表达式并得到它的类型,却不进行实际的计算表达式的值。 decltype 关键字是为了解决 auto 关键字只能对变量进行类型推导的缺陷而出现的。 区间迭代基于范围for循环 最常用的 std::vector 遍历将从:
变成:
初始化列表C++11 提供了统一的语法来初始化任意的对象,例如:
Lambda表达式Lambda 表达式,实际上就是提供了一个类似匿名函数的特性,而匿名函数则是在需要一个函数,但是又不想费力去命名一个函数的情况下去使用的。 Lambda 表达式的基本语法如下:
新增容器std::forward_liststd::forward_list 是一个列表容器,使用方法和 std::list 基本类似。 右值引用和move理解不到位,后续再更新吧 学习过程中,主要参考了jiange_zh的文章 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 23:12:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |