我对java和C#中的OO有很好的理解,我很幸运,在我的工程课程中,他们已经接触到汇编程序和C语言(指针是我的游乐场:D)。
然而,我已经尝试过研究C ++,而得到我的是图书馆代码。有很多关于如何在java和C#中执行面包和黄油任务的很好的例子,但我无法找到如何在C ++中做这些事情的好解释。
我希望将我的知识扩展到C ++中以增加我的技能,但我没有机会接触那些热衷于这些事情的人和社区。 p>
这里的任何人都可以推荐一些有用的好的开源项目或教程。奖励标记,如果它们涉及从这个环境中的java或C#。
答案 0 :(得分:10)
我建议你通过优秀的Andrew Koenig和Barbara Moo的书“Accelerated C ++”(sanitised Amazon link)来解决问题。本书教你C ++,而不是假设你知道C,然后看看用螺栓固定的C ++位。
事实上,您可以在前面章节中深入了解并使用STL容器。
强烈推荐。
答案 1 :(得分:5)
不幸的是,我没有任何这样的资源,因为我花了很长时间慢慢发现事情。
我确实对你有一个警告:请记住,在C ++世界中,标准库在提供有用服务方面一直很慢。基本上,您将找到一些算法,数据结构,一些与字符串相关的类以及一些与I / O相关的基本类。与Java或.Net不同,没有用于各种目的的扩展类库(网络,文件系统服务,加密,并发等) - 最接近它的可能是Boost,它看起来和感觉都像标准库的扩展,但仍然是外部的(尽管它的某些部分正在泄漏回标准库)。
答案 2 :(得分:5)
除了这里的其他答案,我认为你应该看一下QT工具包。它不仅具有GUI小部件,还具有可与数据库,多线程和套接字等工作的库。
BOOST和QT的组合,IMHO,为您提供了在C ++中解决您可能遇到的任何问题的工具。
答案 3 :(得分:2)
值得注意的是,C ++主要是一种系统编程语言。因此,它的主要重点不是表现面包和面包。但是编写用于执行这些任务的工具。例如,C ++不是提供开箱即用的数据库访问库,而是用于编写数据库引擎本身。
答案 4 :(得分:1)
假设您已经掌握了一些C ++语法知识,并且具有良好的面向对象体验,我会选择Effective c++系列。
这是一个“技巧和窍门”的集合,解释了c ++如何在幕后工作。来自其他语言的人们常常会产生误解,以及为什么c ++会以这种方式运作。
答案 5 :(得分:1)
这取决于您编程的平台。 C ++本身没有Java或C#所拥有的那种库。传统上,这种功能由操作系统提供。我建议你从一本书中学习C ++(我喜欢Lippman的C ++ Primer,但它可能有点慢,因为它针对初学者)然后如果你在Windows上编程,那就去MSDN。有网络,XML解析,加密的API,几乎所有你需要的。它们只与操作系统绑定,而不是语言本身。
我不知道Linux或Mac的等效资源,但我确信有人可以提供它们。