如何复兴C ++技能

时间:2020-03-06 14:48:54  来源:igfitidea点击:

我是一名C ++开发人员(主要是ATL / COM人员),直到我们当中很多人切换到Cin2001. 从那时起,我并没有做太多的C ++编程。

我们对如何恢复C ++技能有任何建议吗?在过去的几年中,C ++发生了什么变化?是否有涵盖该语言的好书,文章或者博客。问题在于,我能找到的大多数材料或者针对的是该语言的新手,或者具有丰富的经验。

哪些C ++库最近很流行?我想我将需要阅读STL,因为我使用的并不多。还有什么?促进? ATL? WTL?

解决方案

为了提高C ++技能,我建议我们仍然可以访问一些旧的C ++代码。重新访问它有望触发切换到C:之后处于休眠状态的大脑部分:)

对于库来说,STL是好的,然后提升。我认为ATL / WTL不会在2001年带来太多新东西。

刚开始一个项目。我们使用的库将取决于项目,但是我们当然应该阅读STL。如果我们很长时间没有使用C ++,则可能需要了解有关模板的更多信息。

首先,我想说尝试编写在Mac和Windows或者Linux和Windows上都可以使用的代码。这将迫使我们编写比在Visual C ++上可以摆脱的C ++代码类型更具可移植性的代码,当我们跨平台使用时,有很多更好的地方是非常不同的。

如果我们可以先完善ANSI C ++游戏,我建议暂时不要使用库。我还建议我们阅读C ++ 0x,下一个标准即将推出,它将进一步努力。为此,请仔细阅读STL(其背后的概念,而不是太多的实现)和模板。

如果我们想尝试BOOST,请继续,但是通常无需使用它就可以解决。我之所以不这样做,是因为使用了模板来执行所需的操作,一旦引入了新的标准,其中的许多操作将变得更加容易。

更新:一旦我们对STL感到满意,并开始需要使用STL进行大量代码处理或者非常棘手的事情,然后转到BOOST。在BOOST上购买一本书,并仔细阅读并理解。

尽管有了Boost,但其他的图书馆都在那时,只是相对较新的地方,它才有很大的发展。 Google也适用于TR1和c ++ 0x标准。我们应该明确阅读STL,因为(IMHO)它使C ++变得特别。

ATL是一种可靠的技术(不要误会我的意思,我喜欢它并且仍然在使用它,但是它在MS世界中已经不再流行)。

QT之类的东西对于C ++开发人员来说可能更新颖,更酷,并且具有将我们带入所有新的Linux和Web开发的优势,而这些新的Linux和Web开发将在未来几年内越来越流行。

但是,一旦我们开始考虑可以做的事情,我认为一切都会很快回来。

取一些旧代码并添加到其中。这不会使我们重新掌握最新的C ++趋势,但会让我们陷入困境。

在我的工作中,我不得不向C ++ ActiveX控件中添加一些功能,多年来我一直没有接触过C ++,并且从未做过专业的工作。搞清楚如何再次做,实际上真是太酷了。

我个人发现,当我回到很长一段时间都没有使用过的语言时,语法是我最需要掌握的地方。但是概念和语言的含义在内存中保持不变。

假设它与我们相同,那么我想说,重新审视我们记得在学习C ++时对我们有用的教科书是一个好主意。我建议在C ++中使用Thought,以快速掌握语法。

STL是非常有用的,是的。那是我发现所有成熟的C ++程序员都普遍赞赏的一件事。了解Boost提供的库将很有用。

C ++世界的变化取决于我们喜欢的编译器已决定实现的变化。由于我们提到过AT1 / COM,所以我假设它是VC ++。对MFC的更改将支持Windows窗体(2005 vc ++)和Vista兼容的uI和功能区支持(?)(2008 Vc ++)

VC ++现在支持托管C ++-我确定我们知道Cworld 2008提供的功能也添加了对托管STL的支持。

VC ++试图更加符合标准,并在该领域取得一些进展。

他们引入了许多安全功能,这些功能会贬低诸如strcpy之类的旧std,并且如果我们使用旧的fns,编译器也会发出警告。

VC ++ 2005还具有一种称为函数属性的功能,它用于描述参数,以便可以对传入的输入进行更多检查,并在看到不正常的情况时静态标记警告。有用的人会说,尽管我们的商店尚未升级到使用2005编译器。

MSDN列出了每个版本的重大更改。 Oh&Windows 95,Windows 98,Windows Millennium Edition和Windows NT 4.0的支持已从VC ++的2005版本中删除。此外,我们到目前为止所需的核心库(CRT,ATL,MFC等)现在支持新的部署模型,该模型使它们共享侧系统组件并需要清单。

此链接应该使我们进入http://msdn.microsoft.com/zh-cn/library/y8bt6w34.aspx

2008年甚至添加了更多类似Tr1的建议,更优化的编译器,并行编译(/ mp),对新处理器体系结构的支持等。我还记得其中一种对Open Mp的支持也得到了增强。

再次参考MSDN,这就是所有答案的答案。

祝你好运。

我也遇到了类似的情况:从C ++切换到Cin 2005,然后在2007年又切换回C ++。我不能说C ++世界在那两年中确实发生了变化。最关键的是要恢复我的记忆管理本能,但这只能通过练习来实现。

现在我们已经掌握了C ++和.NET,我们可能想稍微学习一下C ++ CLI(后期的" Managed C ++"的新形式)。

至于书籍,请阅读封面上的"迈尔斯"和"萨特"一书。

使用C ++重写一些Cstuff

一定要阅读Scott Meyers的最新版本的" Effective C ++"。我还将推荐Stephen C. Dewhurst撰写的" C ++技巧:避免编码和设计中的常见问题"。

挑选一种C ++单元测试框架(我建议使用Google C ++测试框架,也称为" gtest")。选择一个可以从头开始的小项目,然后尝试一些TDD。 TDD会鼓励我们采取一些小步骤并反思代码。同样,在构建单元测试套件时,它为我们提供了基础,我们可以从中试验不同的技术。