【问题标题】:Which Effective C++ Items can be implemented better via C++11? How? [closed]哪些有效的 C++ 项可以通过 C++11 更好地实现?如何? [关闭]
【发布时间】:2016-06-12 21:03:57
【问题描述】:

因为这本书Effective C++ 似乎是 still worth readingthe best to start with from the Effective C++ series,我想知道哪些建议的解决方案/实现我不需要详细了解/记住,因为在 C++11 或更高版本中有更好的解决方案。所以:

哪些有效的 C++ 项可以通过 C++11 或更高版本更简单或更好地实现?它们现在如何实现,哪种方式更好?


详情:

既然有many C++ idioms deprecated in C++11,我想这也会影响Effective C++ 书中的解决方案。例如,看its table of contents,我猜(因为我还没有读过这本书)

  • 通过=delete,第 6 项(明确禁止使用您不想要的编译器生成的函数)变得更简单
  • 通过 make_shared(和 C++14 的 make_unique)使第 17 项(将新对象存储在独立语句中的智能指针中)变得更简单
  • 第 21 条(必须返回对象时不要尝试返回引用)通过移动语义变得更简单、更高效
  • 第 55 项(熟悉 Boost)现在示例较少,因为许多 Boost 功能也是 C++11 或更高版本的一部分。

对吗?还有吗?这些项目是如何在现代 C++ 中实现的?

【问题讨论】:

  • 这些观点的寓意没有改变。 C++11 可能为您提供了更好的方法来编写遵循这些想法的代码,但这最终是一个细节。您永远不应该纠结于任何一个特定的细节,而是首先要了解正在解决的问题以及问题存在的原因。
  • 其中一些在 Effective Modern C++ 中得到解决,不管它值多少钱。老实说,这是一个很好的起点。
  • 在你的职业生涯中,你很可能会遇到前后 c++ 代码。如果我是你,我会读这两本书。

标签: c++ c++11 c++14 deprecated


【解决方案1】:

Effective C++ 中的许多方法仍然适用于 C++11。顺便说一句,Effecive Modern C++ 专注于 C++11 的变化。

这个问题很宽泛,但我想到了这个:

5) 仍然正确,但不要忘记移动构造函数和赋值。
6) 仍然正确,但现在更容易了,正如您已经解释的那样
13) 原则仍然正确但忘记auto_ptr 并使用shared_ptrunique_ptr
14) 仍然正确,但使用shared_ptr 进行了简化。
17) 仍然正确,但现在更容易了,正如您已经解释的那样
18) 仍然正确,但更喜欢枚举类而不是枚举。
54) 仍然适用,但适用于新库
55) 仍然正确,尽管现在标准中有更多的增强功能

可以使用autorange for 简化许多示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-12
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多