社区问答第19期:深入应用C++11 祁 宇

柔软的胖纸 2015-06-24 10:13:06
加精
在StackOverflow的最近一次世界性调查中,C++11在所有的编程语言中排名第二, C++11受到程序员的追捧是毫不意外的,因为它就像C++之父Bjarne Stroustrup说的:它看起来就像一门新的语言。C++11新增加了相当多的现代编程语言的特性,相比C++98/03,它在生产力、安全性、性能和易用性上都有了大幅提高。比如auto和decltype让我们从书写冗长的类型和繁琐的类型推断中解脱出来,智能指针让我们再也不用担心内存泄漏的问题,右值引用避免了无谓的临时对象拷贝,type_traits和可以变模板参数让我们可以更方便地写更加泛化的代码……这些还只是新增的一百多项新特性中的一小部分而已。C++14的标准在2014年的时候已经确定,而C++17标准正在制定当中,可以预见的未来,C++的发展会越来越好,C++的应用会越来越广泛,也会更受广大开发者地欢迎。

本期的社区问答(6月24日——7月1日)我们请来了《深入应用C++11:代码优化与工程级应用》一书的作者、资深C++技术专家祁宇(id: qicosmos),为大家解答关于C++11中最常用新特性以及分享学习和应用C++11的经验和乐趣。

嘉宾简介:

祁 宇(id: qicosmos) 资深C++技术专家,致力于C++11的应用、研究和推广。金山软件WPS资深工程师,负责Android服务端开发。精通OOP、OOD、设计模式和重构,主要研究方向为架构设计和业务重构,有丰富的开发和研发管理经验。爱好C++,爱好开源,乐于研究和分享技术,开源了多个项目(github地址:https://github.com/qicosmos),在《程序员》杂志发表多篇技术文章。2013年被评为珠海市优秀青年人才。

问答结束后,祁 宇老师会从所有参与活动并提出问题的朋友中选出三位,送上新作《深入应用C++11:代码优化与工程级应用》一书。



购买链接:http://sale.jd.com/act/TXAJNZmSrkWOEL.html

为了营造更好的问答氛围,我们不欢迎一切与主题无关的讨论、灌水和无脑喷子。

下面欢迎大家踊跃提问,在本帖回复即可。

--------------------------------------------------------------------------------------------------------

本期问答获奖用户:

henuyx
rrrfff
wxs_ftp

请获奖用户将本人 邮寄地址+姓名+联系电话 发私信至楼主,我们会尽快为您邮寄礼品。
...全文
9136 93 打赏 收藏 转发到动态 举报
写回复
用AI写文章
93 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31308385 2016-10-09
  • 打赏
  • 举报
回复
boost库的视频教程,可以分享一下么,或者推荐一个好的学习平台
赵4老师 2016-04-06
  • 打赏
  • 举报
回复
再新的语法,也跳不出图灵机的圈圈。
yshuise 2016-04-06
  • 打赏
  • 举报
回复
祁宇的书还可以吧!
列子汤问 2016-04-05
  • 打赏
  • 举报
回复
最好有个升级到C++11或者C++14的check list,来帮助各个项目的架构师进行升级。
qq_34523973 2016-04-03
  • 打赏
  • 举报
回复
大家好,专家好,很高兴认识你们 今日前来拜访是想和大家探讨一道C语言的题目 题目:非洲大地是一个异常凶猛的动物王国,老虎,狮子,豹子是顶层的食肉动物,他们不但捕食兔子、羚羊、斑马等食草性动物来生存,食肉动物也可以互相吃掉比较弱小的食肉动物,这些动物的排泄物可以补养草木,让其生长,满足食草动物的需要。请模拟该生态系统的动态循环过程,寻找调节某类动物数量的方式
Evankaka 版主 2016-03-04
  • 打赏
  • 举报
回复
支持大牛多来C/C++为大家解惑!!!!!!
a7879944 2015-08-18
  • 打赏
  • 举报
回复
我想请高手帮我制作一个软件。。有报酬。。。。13599313363电话。511190009QQ。。可以联系我。林。
qq_29611597 2015-07-07
  • 打赏
  • 举报
回复
超级能量泡泡 2015-07-03
  • 打赏
  • 举报
回复
引用 24 楼 rrrfff 的回复:
[quote=引用 16 楼 qicosmos 的回复:] auto是用的人很爽,读的人痛苦,滥用auto确实是个问题,会降低程序的可读性和可维护性,我的原则是基本类型和简单类型我不会用auto,只对于难于书写的复杂类型才用auto。与此类似的一个问题是auto+decltype返回类型后置,很多人喜欢把返回累心非常明确的比如int也后置,这实际上也是一种滥用,因为返回类型后置是为了解决难以推断函数返回类型的,而不是为了好玩的^_^。 c++17有很多重大的更新,非常值得期待,比如会增加网络库、concept、文件库、coroutine等等。c++未来会专注于如何进一步的简化语言包袱, 同时引进现代语言的各种特征, 让使用者能够在保证效率的同时更优雅便捷的提升代码的封装性和抽象性.
嗯, 可以想象C++17足以让一个VC6程序员感到格外惊艳... 不过, 语法上的现代化升级, 不可避免的造成编译器在词法语义分析上的压力加大, 这对原本就不是很快的编译过程来说无疑是种负担, 此外, 也一定程度上意味着编译器优化这块更难进行, 我没看过您的书, 不清楚您在书中是否就此进行过探讨?谢谢[/quote] C++11可以减少总代码量,而且硬件现在也较快,问题不大。
宇峰科技 2015-07-03
  • 打赏
  • 举报
回复
引用 84 楼 qicosmos 的回复:
[quote=引用 77 楼 blogtjf 的回复:] C++好书这么多,作为一名C#开发人员该如何选好一本C++开发秘籍呢?求解!
c++ primer入门吧,入门之后多实践。[/quote] 多谢!
king191923157 2015-07-02
  • 打赏
  • 举报
回复
这东西应该慢慢去适应或是习惯去用新标准,不应该刻意去用
RLib 2015-07-02
  • 打赏
  • 举报
回复
引用 43 楼 qicosmos 的回复:
升级编译器就好,win上升级到vs2013, linux升级到GCC4.8以上,clang3.4以上。
visual studio有个小缺点, 就是跨版本的向下兼容不行, 比如08的项目直接用13转换升级就可能出现很多问题, 主要问题还是08中的一些项目文件特性(比如属性文件)被抛弃了, 但在13中也没有相应转换(只有警告), 最后只能手工一个个改
RLib 2015-07-02
  • 打赏
  • 举报
回复
引用 85 楼 qicosmos 的回复:
你哪里看到我在推销书的?
也许是我关于你书的提问让对方误会了吧, 实在是不好意思 很高兴能获赠你的书
silencenet 2015-07-02
  • 打赏
  • 举报
回复
说了半天是来推销书的
qicosmos 2015-07-02
  • 打赏
  • 举报
回复
引用 82 楼 SilenceNet 的回复:
说了半天是来推销书的
你哪里看到我在推销书的?
qicosmos 2015-07-02
  • 打赏
  • 举报
回复
引用 77 楼 blogtjf 的回复:
C++好书这么多,作为一名C#开发人员该如何选好一本C++开发秘籍呢?求解!
c++ primer入门吧,入门之后多实践。
zero_226 2015-07-01
  • 打赏
  • 举报
回复
引用 79 楼 zero_226 的回复:
第一,期待您回复49楼的答案。 第二,不管我们目前用的是什么开发工具,如何确定目前我们使用的是c++标准几呢?(这个问题或许比较low,不要笑话哈,我还是想问)。 thanks
原来是我没翻页。。。。。。。。。忽略我的问题一吧,sorry!
zero_226 2015-07-01
  • 打赏
  • 举报
回复
第一,期待您回复49楼的答案。 第二,不管我们目前用的是什么开发工具,如何确定目前我们使用的是c++标准几呢?(这个问题或许比较low,不要笑话哈,我还是想问)。 thanks
宇峰科技 2015-06-30
  • 打赏
  • 举报
回复
C++好书这么多,作为一名C#开发人员该如何选好一本C++开发秘籍呢?求解!
随鑫所欲 2015-06-30
  • 打赏
  • 举报
回复
引用 12 楼 accessysq 的回复:
[quote=引用 11 楼 qicosmos 的回复:] [quote=引用 10 楼 accessysq 的回复:] 短期无法使用,IDE不支持。
升级就好。[/quote] 不能升级,因为部分功能被微软捆绑死了。只能用vs2005.不想弄太多个vs了。[/quote] 什么功能被VS2005捆绑死了,我怎么没发现呢?
加载更多回复(73)
学习并掌握C++2.0(11+14+17+20)的新特性,学习线程及线程池的应用 ---------------------------------------------------给小白学员的3年学习路径及计划技术方面分三块:1.纯开发技术方向2.音视频流媒体专业方向3.项目实战---------------------------------------------------1.纯开发技术方向(1) C++必须要过硬(至少学会10本经典好书)(2) 系统级编程(Windows、Linux),必须特别熟练系统API,灵活运用(3) 框架与工具(Qt、MFC):必须精通其中一种。(4) 架构与设计模式:需要提升一个高度,不再是简单的编码,而是思维模式。(5) 驱动级别(如果有兴趣,可以深入到驱动级:包括Windows、Linux)(6) 最好学习点Java+Html+javascript等WEB技术。2.音视频流媒体专业方向(1) 音视频流媒体基础理论:   必须认真学会,否则看代码就是看天书(2) 编解码方向:精通h.264,h.265(hevc), 包括理论和各个开源库(ffmpeg,libx264,libx265,...)。(3) 直播方向:  精通各种直播协议(rtsp,rtmp,hls,http-flv,...), 钻研各个开源库(live555,darwin,srs,zlmediakit,crtmpserver,...)(4) 视频监控:  理论+开源库(onvif+281818)(EasyMonitor、iSpy、ZoneMinder(web)、...) 3.项目实战(1) Qt项目:  至少要亲手练习10个实战项目(网络服务器、多线程、数据库、图像处理、多人聊天、等等)(2)音视频项目:包括编解码、视频监控、直播等各个方向,都需要亲手实战项目,包括视频服务器、后台管理系统、前端播放器(多端)---------------------------------------------------  第1章 C++11新特性 41). nullptr关键字与新语法 42). auto和decltype类型推导 6 auto讲解 6 auto示例 7 decltype 83). for区间迭代 94). 初始化列表 105). 模板增强 11外部模板 11类型别名模板 12默认模板参数 126). 构造函数 13委托构造 13继承构造 147). Lambda 表达式 158). 新增容器 20std::array 20std::forward_list 21无序容器 22元组 std::tuple 239). 正则表达式 2610). 语言级线程支持 28多线程库简介 2811). 右值引用和move语义 31右值引用和move语义 32转移左值 3412). constexpr 35第2章 C++14新特性 36Lambda 函数 36类型推导 37返回值类型推导(Return type deduction) 37泛型lambda 39[[弃用的]]  [[deprecated]]属性 40二进制数字和数字分隔符 41第3章 C++17新特性 42安装GCC10.2 42安装msys2-x86_64-20200720 42更新镜像 42更新软件库 43安装 MinGW64 等必要的软件 43环境变量Path 43编译命令 43constexpr 44typename 45折叠表达式 47结构化绑定 48条件分支语句初始化 49聚合初始化 50嵌套命名空间 52lambda表达式捕获*this的值 53改写/继承构造函数 54用auto作为非类型模板参数 55__has_include 56fallthrough 57nodiscard 57maybe_unused 58第4章 C++20新特性 59编译命令 59concept 59typename 60explicit 61constinit 62位域变量的默认成员初始化 62指定初始化 63基于范围的for循环初始化 64放宽基于范围的for循环,新增自定义范围方法 65嵌套内联命名空间 66允许用圆括弧的值进行聚合初始化 67unicode字符串字面量 68允许转换成未知边界的数组 68likely和unlikely 69第5章 C++2.0(11/14/17/20)总结与分析 705.1 C语言与C++ 715.2 语言可用性的强化 725.2.1 常量 725.2.2 变量及其初始化 735.2.3 类型推导 745.2.4 控制流 765.2.5 模板 775.2.6 面向对象 815.3 语言运行的强化 835.3.1 Lambda 表达式 835.3.2 右值引用 865.4 容器 885.4.1 线性容器 885.4.2 无序容器 895.4.3 元组 895.5 智能指针与内存管理 905.5.1 RAII 与引用计数 905.5.2 std::shared_ptr 905.5.3 std::unique_ptr 915.5.4 std::weak_ptr 91第6章 C++2.0多线程原理与实战 93什么是并发 93并发的方式 93为什么使用并发 95线程简介 96创建线程的三种方式 971. 通过函数 972.通过类对象创建线程 993.通过lambda表达式创建线程 101thread线程的使用 101互斥量与临界区 105物Future 111条件变量 112原子操作 114内存模型 118第7章 C++2.0线程池原理与实战 120线程与线程池的基本原理 1201)、线程 1202)、线程的生命周 1213)、什么是单线程和多线程 1214)、线程池 1225)、四种常见的线程池 123线程池的架构与流程 123线程池代码实战 125    

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧