在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → 高速上手 C++ 11 14 17

高速上手 C++ 11 14 17

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:2.12M
  • 下载次数:5
  • 浏览次数:98
  • 发布时间:2020-09-28
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
高速上手 C++ 11 14 17 高速上手 C++ 11 14 17 高速上手 C++ 11 14 17
目录 目录 尖括号“ 类型别名模板,, 28 默认模板参数 变长参数模板.. 24 折叠表达式 26面向对象 委托构造 26 继承构造 27 显式虚函数重载 显式禁用默认函数 强类型枚举 习题 进一步阅读的参考文献 第3章语言运行期的强化 31 、本节内容.. Lambda表达式 Lambda表达式基础 31 泛型 Lambda 函数对象何装器 std: function std: bind /std: placeholder 右值引用 左值、右值的纯右值、将亡笮、右值 .35 右值引用和左值引用 36 移动语义 完美转发 结 84 3 目录 目录 第4章对标准库的扩充:新增容器 41 本节内容 std: array FH std: forward_ list std: : array 41 std: forward list 无序容器 四、元组std: tuple 元组基操作 运行期索引 元组合并与煸历 第5章对标准库的扩充:引用计数与智能指针 、本节内容 、RAII与引用计数 、 std: shared ptr 47 四、std: unique_ptr 五、std: weak__ptr 49 总结 进一步阅读的参考资料 51 第6章正则表达式库 51 本节内容 、正则表达式简介 普通字符 特殊字符 5 限定符 、std: regeX及其相关 ....53 总结 进一步阅读的参考资料 目录 目录 第7章语言级线程支持 55 本节内容 55 std: theca std: mutex, std: unique lock 总结 59 进一步阅读的参考资料 59 第8章标准库:文件系统 59 第9章其他杂项 59 本节内容 59 新类型 longlong int 、 except的修饰和操作 60 四、字面量 原始字符串字面量,. 61 自定义字面量 总结 第10章展望:C++20简介 63 本节内容 主要入选特性 63 非类型模板参数的auto std: variant<> 、未入选特性 64 Concepts ts 总结 进一步阅读的参考资料 附录:进一步阅读的学习材料 66 序言 序言 引言 C++是一个用广群体相当大的语言。从C-+98的出现到C++11的正式定稿经历了长达十年多之 久的积累。C++14/17则是作为对C++11的重要补充和优亿,所有这些新标准中扩充的特性,给C+ 这门语言注入了新的活力。那些还在坚持使用传统C++(本书把C++98及其之前的C++特性均称 之为传统C++)而未接触过C++11/14/17的C++程序员在见到诸如 Lamblia表达式这类全新特性 时,甚至会流露出『学的不是同门语言』的惊叹之情。 C++1x(或现代C++,本书中均指C++11/14/17)为传统C-+注入的大量特性使得整个C++ 变得更加偬门代牝的语言。C+-1x不仅仅增强了C++语言自身的可用性,auto关键宇语义的修 改使得我们更加有信心来操控极度复杂的模板类型。同时还对语言运行期进行了大量的强化, Lambda 表达式的出现让C++具有了『匿名函数』的『闭包」特性.而这一特性几乎在现代的编程语言(诸如 Python/ Swift/.)中已经可空见惯,右值引用的出现解决了C-+长期以来被人诟病的临时对象效率 问题等等。 C++17则是近三年依赖C++社区一致推进的方向,也指出了现代C++编程的一个重要发展方 问。尽管它的出现并不如C++11的分量之重,但它包含了大量小而美的语言与特性〈例如结构化绑定), 这些特性的出觋冉一次修正我们在C-+中的编程范式 现代C++还为自身的标准库増加了非常多的工貝和方法,诸如在语言自身标准的层面上制定了std thread,从而支持了并发编程,在不同半合上不冉依赖于系统底层的APL,实觋∫语言层面的跨半台 支持;std:: regex提供了完整的正则表达式支持等等。C++98已经被实践证明了是一种非常成功的『范 型』,而C++1x的出现,则进一步推动这种范型,让C++成为系统程序设计和库开发夏好的语言 总而言之,我们作为C++的拥护与实践者,始终保持接纳新事物的开放心态,才能更快的推进C++ 的发展,使得这门古老而又新颖的语言更加允满活力。 目标读者 1.本书假定读者已经熟悉了传统C++,至少在阅读传统C++代码上不貝备任何困难。换句话说, 些长期使用传统¢++进行编码的人、渴望在短时间内迅速了解现代C+十特性的人非常适 阅读本书 2.本书一定程度上介绍了一些现代C++的黑魔法,但这些魔法毕竟有限,不适合希望进阶学习现代 C++的读者,本书的定位系现代C++的快速上手。当然,希望进阶学习的读者可以使用本书来 回顾并检验自己对现代C++的熟悉度。 本书目的 本书号称『高速上于』、从内容上对二十一世纪二十年代之前产生C++的相关特性做了非常相对全 面的介绍,读者可以自行根据下面的目录选取感兴趣的内容进行学习.快速熟悉需要了解的内容。这些 特性并不需要仝部掌握,只需针对自己的使用需求和特定的应用场景,学习、查阅最适合自己的新特性 6 相关代马 第1章迈向C++11/14/17 即可。 同时,本书在介绍这些特性的过程中,尽可能简单明了的介绍了这些特性产生的历史背景和技术需 求,这为理解这些特性、运用这些特性提供∫很大的帮助 此外,笔者希望读者在阋读本书后,能够努力在新项目中盲接使用C-+17,并努力将旧项目逐步迁 移到C++17。也算是笔者为推进现代C++的普及贞献了一些绵薄之力。 相关代码 本书每章屮都出现了大量的代码.如果你在跟随本书介绍特性的思路编写自己的代码遇到问颢时,不 妨读一读随书附上的源码、你可以在这里中找到书中介绍过的全部的源码,所有代码按章节组织,文件 夹名称为章节序号 第1章迈向C++11/14/17 编译环境:本书将使用 clang艹+作为唯一使用的编译器,同吋总是在代码中使用-std=c+17编详标 clang++-v 2 Apple LLvM version 9.1.0(clang-9020 39.1) Target: x86_ -darwin17.5.0 ∠| Thread mode1: posix 6InstalledDir: /Library/Developer/CommandLineTools/usr/bin 1.1被弃用的特性 在学习C-++1x之前,我们先了解一下从C++11开始,被弃用的主妟特性 注意:弃用并非彻底不能用,只是用于暗小程序员这些特性将从未来的标准中消失,应该尽 量避免使用。但是,已弃用的特性依然是标准库的一部分,并且出于兼容性的考虑,大部分 特性其实会『永久』保留。 不再允许字符串字面值常量赋值给一个char*。如果需要用字符串字面值常量赋值和初始化一个 char*,应该使用 const char*或者 autos char*str="he11owor1d!";//将出现弃用警告 C+十98异常说明、 unexcepted_handler、set_ unexpected()等相关特性被弃用,应该使用 except。 · auto_ptr被弃用,应使用 unique_ptr。 register关键字被弃用,可以使用但不再具备任何实际含义。 ●bo01类型的++操作被弃用。 12与C的兼容性 第1章迈向C++11/14/17 C++98 c99 C++1X C11 图1:图1.2:C和C++互相兼容情况 ●如果一个类有析构函数,为其生成拷贝构造函数和拷贝赋值运算符的特性被弃用了。 C语言风格的类型转换被弃用(即在变量前使用( convert-type)),应该使用 static cast、 reinterpret_cast、 const cast来进行类型转换。 特别地,在最新的C++17标准中弃用了一些可以使用的C标准库,例如< ccomplex>、< cstdalign 、< cstdbod1>与< ctgmath>等 等等 还有一些其他诸如参数绑定(C++11提供了std:bind和std: function)、 export等特性也均被 弃用ε前面提到的这些特性如果你从未使用或者听说过,也请不要尝试去了解他们,应该向新标准靠拢 直接学习新特性。毕竟,技术是向前发展的。 1.2与C的兼容性 出于一些不可抗力、历史原因,我们不得不在C++中使用一些C语言代码(甚至古老的C语言代 码)、例如 Linux系统调用。在C++1x出现之前,大部分人当谈及『C与C++的区别是什么』时,普 遍除了回答面问对象的类特性、泛型编程的模板特性外、就没有其他的看法了,甚至直接回答『差不多』, 也是大有人在。图1.2中的韦恩图大致上回答了C和C++相关的兼容情况 从现在开始、你的脑子甲应该树立『C++不是C的一个超集』这个观念(而且从一开始就不是 后面的进一步阅读的参考文献中给出了C++98和C99之间的区别)。在编写C++时,也应该尽可能 的避免使用诸如τid*之类的程序人格。而在不得不使用C时,应该注意使用 extern"c"这种特性,将 C语言的代码与C++代码进行分离编译,再统一链接这种做法,例如: 8 1.2与C的兼容性 第1章迈向C++11/14/17 h # ifdef lusplu extern #endif ± mt add(intx #ifdef __cplusplus #endif 00.c int add(int x, int y)t reutrn x+ 17/1.1.cpp #include foo, h 19#±nc1ude<i。 stream> 20 #include <functional> 22 int main)t Lout std:: ref(std:: cout < "Result from c code: < add(1, 2))]()i ut.get(<<".\n"; }() 应先使用gcc编译C语言的代码 C c foo.c 编译出foo.o文件,再使用 clang艹+将C-+代码和.o文件链接起来(或者都编译为.。再统一链 接) 1 clang++ 1.1. cpp foo.o-std-=C++17-011 当然,你可以可以使用 Makefile来编译上雨的代码 CXX clang+ SOURCE C f 6OBJECTS C=foo.o SOURCE_CXX =1.1.CI 进一步阅读的参考文献 第2章语言可用性的强化 9 TARGET =1.1 10 LDFLAGS_ COMMON =-std=C++17 12a⊥1: S(C)C (SOURCE C) S(CXX) S (SOURCE CXX) S(OBJECTS C) $(LDFLAGS COMMON) -O S(TARGET) 13 clean: rm -rf *O (TARGET) 注意: Makefile中的缩进是制表符而不是空格符,如果你直接复制这段代码到你的编辑器中 制表符可能会被自动替換掉,请自行确保在 Makefile中的缩进是由制表符完成的。 如果你还不知道 Makefile的使用也没有关系,木教程中不会构建过于复杂的代码,简单的在 命令行中使用 clang++-std-c+17也可以阅读本书。 如果你是首次接触现代C++,那么你很可能还看不懂上面的那一小段代码,即 Lout std:: ref (std:: cout < Result from c code <<add(1,2))]()f 2 out.get()<<".、n"; 不必担心,本书的后续章节将为你介绍这一切。 进一步阅读的参考文献 1.C++语言导学, Bjarne stroustrup 2.C++历史 3.C++1x特性在GC/(Cang等编译器中的支持情况 4.C++98与C99之间的区别 第2章语言可用性的强化 当我们声明、定乂一个变量或者常量,对代码进行流程控制、面向对象的功能、模板编程等这些都 是运行时之前,可能发生在编写代码或编译器编译代码时的行为。为此,我们通常谈及语言可用性.是 指邦些发生在运行时之前的语言行为 1常量 nullptr nu1lptr出现的目的是为∫替代NUL。在某种意义上来说,传统C++会把WU、0观为同一种东 丙,这取决于编译器如何定义NULL,有些编译器会将NULL定义为(void*)0),有些则会直接将其定 【实例截图】
【核心代码】

标签:

实例下载地址

高速上手 C++ 11 14 17

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警