编辑
2024-02-27
tools
00
请注意,本文编写于 205 天前,最后修改于 205 天前,其中某些信息可能已经过时。

目录

简介

Website: Effective Modern C++

简介

如果你是一位经验丰富的 C++ 程序员并且多少跟我差不多,那你在初次接触 C++11 的时候就会想,“是的,是的,我知道的。它还是 C++,就是多了点东西。”但随着你了解越多,你会为改变的幅度之巨感到震惊。auto 声明,基于 range 的 for 循环,lambda 表达式,还有右值引用完全改变了 C++ 的面貌,这还不说新的并发特性。然后还有一些惯常的改进。0 和 typedef 出局,nullptr 和别名声明新晋。枚举现在应该是限域的了。相比内置的指针类型,现在要更倾向去使用智能指针。移动对象通常也好过于拷贝它们。

有很多C++11的东西要学,先不提C++14了。

更重要的是,要学习怎样高效地使用新机能。如果你需要关于”现代“C++的特性的基础信息,学习资源有很多,但是你想找一些指南,教你怎样应用这些特性来写出正确、高效、可维护、可移植的程序,那就相当有挑战性了。这就是这本书的切入点。它不致力于介绍C++11和C++14的特性,而致力于它们的高效应用。

书中这些信息被打碎成不同指导方针,称为条款。想理解类型推导的不同形式?或者想知道什么时候该用(或者不该用)auto声明?你对为什么const成员函数应当线程安全,怎样使用std::unique_ptr实现Pimpl惯用法,为何要避免lambda表达式用默认捕获模式,或者std::atomic与volatile的区别感兴趣吗?答案都在这里。而且,答案无关于平台,顺应于标准。这本书是关于可移植C++的。

本书的条款是指导方针,而不是规则,因为指导方针也有例外。每个条款中最关键的部分不是提出的建议,而是建议背后的基本原理。一旦你阅读了它,你就明白你的程序的情况是否违反了条款的指导意见。本书的真正目的不是告诉你应该做什么不应该做什么,而是帮你深入理解C++11和C++14中各种东西是如何工作的。

本文作者:OhtoAi

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!