对现代C ++范例的最佳概述?[关闭]


16

我曾经在8到10年前广泛地编写C ++。从那以后,出于专业原因,我开始使用C#。但是,我有时会看到类似

“如果您仍在手动跟踪指针引用,那么您做错了”

要么

“只要您使用的是RAII之类的现代概念,并且不像正在恢复的C开发人员那样手动分配内存,C ++绝对是安全的。”

两者都是十年前的标准程序。我已经看到,最近C ++有了很大的改进。特别是C ++ 0x似乎具有一些新功能。对于“ C / old C ++”程序员来说,赶上“现代” C ++模式和实践的最佳资源是什么?


3
他们是十年前的标准程序。不幸的是,仍然使用与标准程序的C ++开发者的一个非常显著部分3年前。
DeadMG

7
我不了解任何资源,但是现代C ++基本上可以归结为:(1)尽可能广泛地使用STL代替手动滚动算法,(2)在手动分配/取消分配上使用智能指针和STL容器,(3)使用仿函数/ lambda和高阶函数的功能式编程风格,以及(4)在可行的情况下,优先选择基于模板的静态多态性,而不是运行时虚拟函数
Charles Salvia 2012年

Scott Meyers
撰写的

Answers:


5

与教学材料相比,它可能与大多数其他事情更多有关,但是在8到10年前,在我看来,这种语言的使用方式与今天有很大不同。今天的重点更多地放在利用模板,类型安全性和通用编程上,而在此之前人们对此更加恐惧,人们几乎只将C放在对象方面。

教学材料也在发生变化。在标准C ++入门书将带您完成printf,scanf等之前,您甚至几乎没有用现代方法在书中看到这些内容。

一些好书是红色的书。卓越的C ++,更多卓越的C ++,C ++模板元编程,现代C ++设计,加速的C ++ ...

我认为看看我目前在哪里工作可能是一个很好的例子。我以现代方式使用C ++来到这里,似乎大多数开发人员甚至都不知道我在做什么或为什么。例如,使用操作符()制作对象...必须在每次bind()发生时都注释掉地狱,最终被告知废弃所有代码。不知道初始化程序是做什么的...实际上,这对我来说真的很古怪而且很难。


5

为了很好地快速介绍现代功能,您可以在// build /上浏览Herb Sutter的最新演讲 “编写现代C ++代码:多年来C ++的发展”,这一点没有错。

他谈到了为什么它的语言比C#更好(当然-微软会定期更换裤子,今天他们穿着C ++时尚,所以他们会大肆宣传,就像他们大肆宣传C#作为十年来解决世界饥饿的答案一样)前),但他确实描述了所有好的位(例如“自动”内存管理和STL类),然后继续讨论了C ++ 0x标准中的新位。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.