如何恢复C++技能

How to revive C++ skills

本文关键字:C++ 技能 恢复 何恢复      更新时间:2023-10-16

我是一个C++开发人员(主要是ATL/COM的东西),直到我们中的许多人在2001年切换到C#。从那以后,我就没有做过太多C++编程。

你有什么关于如何恢复我的C++技能的提示吗?在过去的几年里,C++发生了哪些变化?是否有涵盖该语言的好书、文章或博客。问题是,我能找到的大多数材料要么针对刚接触该语言的人,要么针对那些有很多经验的人。

如今,哪些C++图书馆很受欢迎?我想我需要阅读 STL,因为我不怎么使用它。还有什么?提高?ATL?WTL?

Boost - 尽管它和其他库当时已经存在,但直到最近它才大举起飞。谷歌也用于TR1和c ++ 0x标准。你应该明确地阅读STL,因为(恕我直言)这是C++特别的东西。

ATL是一个很好的死技术(不要误会我的意思,我喜欢它并且仍然在某种程度上使用它,但它在MS世界中不再流行了)。

像QT这样的东西对于C++开发人员来说可能更新颖,更酷,并且具有让你进入未来几年将越来越流行的所有新Linux和Web开发的优势。

然而,一旦你开始考虑你能做的事情,我认为这一切都会很快回来。

我个人发现,当我回到很久没有使用的语言时,语法是我最需要赶上的地方。但是概念和语言的内容在记忆中保持不变。

假设你也一样,我会说重新审视你记得的在学习C++时对你有用的文本是个好主意。我会在C++中重新推荐思考语法。

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

对C++世界的更改取决于您最喜欢的编译器决定实现的更改。既然你提到了ATl/COM,我假设它会是VC++。对MFC的更改将支持Windows Forms(2005 vc ++)和Vista兼容的uI和功能区支持(?(2008 Vc++)

VC++ 现在支持托管C++ - 我相信你知道来自 C# 世界的内容 - 2008 也增加了对托管 STL 的支持。

VC++正试图提高标准的合规性,并在该领域取得了一些进展。

他们引入了许多安全函数,可以贬低旧的std,如strcpy,如果你使用旧的fns,编译器也会给出警告。

VC++2005 还有一种叫做函数属性的东西,它用来描述参数,以便它可以对你传入的输入进行更多检查,并在发现错误时静态标记警告。有用我会说,虽然我们的商店还没有发展到使用 2005 编译器。

MSDN 具有每个版本的中断性更改列表。对Windows 95,Windows 98,Windows Millennium Edition和Windows NT 4.0的支持已从2005版VC++中删除。此外,您目前所需的核心库(CRT、ATL、MFC 等)现在支持新的部署模型,这使得它们成为共享的侧组件,并且需要一个清单。

此链接应该让您开始 - http://msdn.microsoft.com/en-us/library/y8bt6w34.aspx

2008 增加了更多类似于 Tr1 的建议,更多的优化编译器,并行编译(/mp),对新处理器架构的支持等。

再次参考 MSDN - 这是所有答案的可靠来源。

祝你好运。

一定要阅读斯科特·迈耶斯(Scott Meyers)的最新版"有效C++"。 我还会推荐Stephen C. Dewhurst的《C++ Gotchas: VoidCommon Problems in Coding and Design》。

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

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

只需启动一个项目。您使用的库将取决于您的项目,但您当然应该阅读 STL。如果您长时间不使用C++,则可能需要了解有关模板的更多信息。

选择C++单元测试框架之一(我建议谷歌C++测试框架,又名。 gtest)。 选择一个可以从头开始的小项目并尝试一些TDD。 TDD 将鼓励您采取小步骤并反思您的代码。 此外,当您构建单元测试套件时,它为您提供了一个基础,您可以从中试验不同的技术。

使用 C++

重写一些 C# 内容

>

首先,我会说尝试编写适用于Mac和Windows或Linux和Windows的代码。这将迫使您编写比在Visual C++上可以侥幸逃脱的C++代码类型更具可移植性的代码 - 当您跨平台时,有很多更精细的点非常不同。

如果可以的话,我建议暂时远离图书馆 - 首先完善您的 ANSI C++游戏。我还建议阅读 C++0x - 下一个标准即将到期,它会帮助你朝着这个方向努力。为此,请复习 STL(其背后的概念,而不是实现)和模板。

如果您想尝试 BOOST,请继续,但您通常可以在不使用它的情况下通过。我远离它的原因主要是因为模板用于完成所需工作的方式 - 一旦引入新标准,其中很多都会变得容易得多。

更新:一旦你对STL感到满意,并开始需要做一些需要STL大量代码的事情,或者只是非常棘手的事情,然后前往BOOST。买一本关于BOOST的书,阅读并很好地理解它。

获取一些旧代码并添加到其中。这不会让你回到最新的C++趋势之上,但它会让你的脚湿润。

在我的工作中,我不得不向C++ ActiveX 控件添加一些功能,我已经很多年没有碰过C++了,也从来没有专业地做过。弄清楚如何再次做到这一点实际上非常酷。

我也有类似的情况:2005 年从 C++ 切换到 C#,然后在 2007 年切换回 C++。我不能说C++宇宙在这两年里真的发生了变化。最关键的是恢复我的记忆管理本能,但这只能通过练习来完成。

现在,您已经同时拥有C++和 .NET,您可能需要稍微研究一下C++ CLI(最近"托管C++"的新化身)。

至于书籍,阅读封面上有"迈耶斯"和"萨特"的所有内容。