我是一名C ++开发人员(主要是ATL / COM的东西),直到我们很多人,我在2001年转为C#。从那以后我没有做太多的C ++编程。
您对如何恢复我的C ++技能有什么建议吗?在过去的几年中,C ++发生了哪些变化?是否有涵盖该语言的好书,文章或博客。问题是,我找到的大多数材料要么针对那些不熟悉该语言的人,要么针对那些有很多经验的人。
目前哪些C ++库很受欢迎?我想我需要阅读STL,因为我没有太多使用它。还有什么?促进? ATL? WTL?
答案 0 :(得分:10)
Boost - 虽然它和当时的其他图书馆都存在,但它最近才在很大程度上被取消。谷歌也适用于TR1和c ++ 0x标准。你应该正确地阅读STL,因为(恕我直言)它使C ++变得特别。
ATL是一个很好的死技术(不要误解我的意思,我喜欢它并且仍然使用它,但它在MS世界中不再流行)。
像QT这样的东西对于C ++开发人员来说可能更新,更酷,并且具有让你进入所有新的Linux和Web开发的优势,这些开发将在未来几年内越来越受欢迎。但是,一旦你开始研究你可以做的事情,我认为这一切都会很快回来。
答案 1 :(得分:8)
我个人觉得语法是我最常需要赶上的地方,当我回到我很久没用过的语言时。但是这些概念和语言的内容在记忆中保持不变。
假设它和你一样,我会说在你学习C ++的同时重新审视你记得对你有用的文本是一个好主意。为了快速掌握语法,我建议用C ++思考。
STL真的很有用。这是我发现所有成熟的C ++程序员普遍赞赏的一件事。了解Boost提供的库将会很有用。
C ++世界的变化取决于您最喜欢的编译器决定实施的更改。既然你提到了ATl / COM,我认为它将是VC ++。对MFC的更改将支持Windows Forms(2005 vc ++)和符合Vista的uI和功能区支持(?)(2008 Vc ++)
VC ++现在支持托管C ++ - 我确定你知道C#世界会发生什么 - 2008年也增加了对托管STL的支持。
VC ++正在努力提高标准,并在该领域取得一些进展。
他们已经引入了许多安全功能,这些功能可以折旧旧的stds,如strcpy,如果使用旧的fns,编译器也会发出警告。
VC ++ 2005还有一些称为函数属性的函数,它用于描述参数,以便它可以对传入的输入进行更多检查,并在看到soething amiss时静态标记警告。虽然我们的商店还没有使用2005编译器,但我会说有用。MSDN拥有每个版本的重大更改列表。哦&从2005版VC ++中删除了对Windows 95,Windows 98,Windows Millennium Edition和Windows NT 4.0的支持。此外,您现在需要的核心库(CRT,ATL,MFC等)现在支持新的部署模型,这使得它们共享侧面sy侧组件并需要清单。
此链接可让您前进 - http://msdn.microsoft.com/en-us/library/y8bt6w34.aspx
2008年增加了更多类似Tr1的建议,更多的优化编译器,并行编译(/ mp),支持新的处理器架构等。在我记得的其中一个版本中,开放式Mp支持也得到了增强。再次参考MSDN - 这是所有答案的suthentic来源。
祝你好运。答案 2 :(得分:5)
绝对阅读Scott Meyers的最新版“Effective C ++”。我还推荐Stephen C. Dewhurst撰写的“C ++陷阱:避免编码和设计中的常见问题”。
答案 3 :(得分:4)
为了提高您的C ++技能,如果您仍然可以访问它,我建议您查看一些旧的C ++代码。重新审视它将有希望触发那些在切换到C#后已经处于休眠状态的大脑部分:)
对于图书馆,STL很好,然后是提升。我不认为在2001年您所知道的ATL / WTL会有太多新内容。
答案 4 :(得分:4)
刚开始一个项目。您使用的库将取决于您的项目,但您当然应该阅读STL。如果您长时间没有使用C ++,则可能需要了解有关模板的更多信息。
答案 5 :(得分:4)
选择一个C ++单元测试框架(我建议Google C++ Testing Framework,又名。gtest
)。选择一个可以从头开始的小项目并尝试一些TDD。 TDD将鼓励您采取小步骤并反思您的代码。此外,在构建单元测试套件时,它为您提供了一个基础,您可以从中尝试不同的技术。
答案 6 :(得分:3)
首先,我想尝试编写适用于Mac和Windows或Linux和Windows的代码。这将迫使您编写比您可以在Visual C ++中获得的C ++代码类型更便携的代码 - 当您跨平台时,有许多细节点非常不同。
如果可以的话,我建议暂时远离库 - 首先完善你的ANSI C ++游戏。我还建议阅读C ++ 0x - 下一个标准即将推出,它将帮助你更多地努力。为此,请了解STL(它背后的概念,而不是实现这么多)和模板。
如果您想尝试BOOST,请继续,但您通常可以不使用它。我之所以远离它,主要是因为模板用于完成所需的工作 - 一旦引入新标准,其中很多将变得更加容易。
更新:一旦你对STL感到满意并开始需要做一些需要大量STL代码的事情,或者只是非常棘手,那么请转到BOOST。买一本关于BOOST的书并阅读并理解它。
答案 7 :(得分:3)
使用C ++重写一些C#内容
答案 8 :(得分:2)
获取一些旧代码并添加到其中。这不会让你重新回到最新的C ++趋势,但它会让你的脚湿透。
在我的工作中,我不得不在C ++ ActiveX控件中添加一些功能,而且我多年来都没有触及过C ++,而且从未专业化。弄清楚如何再做一次实际上非常酷。
答案 9 :(得分:2)
我遇到了类似的情况:2005年从C ++转为C#,然后在2007年转回C ++。我不能说C ++ Universe在这2年里真的发生了变化。最重要的是恢复我的记忆管理本能,但这只能通过练习才能实现。
既然您已经掌握了C ++和.NET,那么您可能需要稍微学习一下C ++ CLI(最新版本的“Managed C ++”)。
至于书籍,请阅读封面上的“Meyers”和“Sutter”。