| |
|
开发:
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常用新特性 |
C++11是一种目前最常用的C++标准,可以说不同标准下的语言,给人的感觉如同不同语言。 面试中的C++,除了基本语法和基本特性(如:三大特性:封装、继承、多态,虚函数等)对C++11标准的考察也是重中之重。 一般会围绕智能指针、lambda、auto关键字等典型特性来询问。下面是关于C++11标准的回答。 1、C++11有哪些新特性?
2、nullptr
对于这两个函数来说,如果NULL又被定义成了0,那么foo(int) 这个语句将会调用foo(int) 从而导致代码违反coder的本意。 解决办法: 3、类型推导
auto 在很早以前就已经进入了 C++,但是他始终作为一个存储类型的指示符存在,与 register 并存。在传统 C++ 中,如果一个变量没有声明为 register 变量,将自动被视为一个 auto 变量。而随着 register 被弃用,对 auto 的语义变更也就非常自然了。 使用 auto 进行类型推导的一个最为常见而且显著的例子就是迭代器。在以前我们需要这样来书写一个迭代器:
很明显,代码臃肿,coder也麻烦,有了auto后,迭代器就成了:
不再需要coder去考虑数据类型,将繁重的工作量对给了编译器;
但是值得注意的是:auto不能用于函数传参,无法通过编译,如:
此外,auto还不能用于推导数组的类型,如:
在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值,如:
拖尾返回类型、auto与decltype相配合
这样的代码其实变得很丑陋,因为程序员在使用这个模板函数的时候,必须明确指出返回类型。但事实上我们并不知道 add() 这个函数会做什么样的操作,获得一个什么样的返回类型。
但事实上这样的写法并不能通过编译。这是因为在编译器读到 decltype(x+y) 时,x 和 y 尚未被定义。为了解决这个问题,C++11 还引入了一个叫做拖尾返回类型(trailing return type),利用 auto 关键字将返回类型后置:
从 C++14 开始是可以直接让普通函数具备返回值推导,因此下面的写法变得合法:
4、区间迭代
变得很简单:
妈妈再也不用担心我不会指针了!!! 5、初始化列表 C++11 提供了统一的语法来初始化任意的对象,例如:
C++11 还把初始化列表的概念绑定到了类型上,并将其称之为 std::initializer_list,允许构造函数或其他函数像参数一样使用初始化列表,这就为类对象的初始化与普通数组和 POD 的初始化方法提供了统一的桥梁,例如:
未完待续。。。 |
|
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:22:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |