我对java和C#中的面向对象有很好的理解,而且在我的工程课程中,我有幸接触到汇编和C语言(指针是我的游乐场 :D )。
然而,我尝试了解C++,但困扰我的是库代码。在java和C#中,有很多很好的示例,展示如何执行基本任务,但我没有找到一个好的解释来说明如何在C++中进行这些操作。
我希望扩展我的知识,学习C++以增加我的技能,但我还没有机会接触到热衷于这些事情的人和社区。
请问是否有人可以推荐一些有用的开源项目或教程。如果涉及从java或C#转换到这个环境,将获得额外的加分。
我对java和C#中的面向对象有很好的理解,而且在我的工程课程中,我有幸接触到汇编和C语言(指针是我的游乐场 :D )。
然而,我尝试了解C++,但困扰我的是库代码。在java和C#中,有很多很好的示例,展示如何执行基本任务,但我没有找到一个好的解释来说明如何在C++中进行这些操作。
我希望扩展我的知识,学习C++以增加我的技能,但我还没有机会接触到热衷于这些事情的人和社区。
请问是否有人可以推荐一些有用的开源项目或教程。如果涉及从java或C#转换到这个环境,将获得额外的加分。
我建议你通读优秀的Andrew Koenig和Barbara Moo的书“Accelerated C++”(经过清理的亚马逊链接)。这本书教授C++,而不是假设你已经了解了C,然后再去看C++的细节。
事实上,在早期章节中,你就会开始使用STL容器。
强烈推荐。
很遗憾,我没有这样的资源可以提供给你,因为我是通过逐步发现事物的方式来学习的。
不过,我有一个注意事项要告诉你:请记住,在C++世界中,标准库一直缺乏有用的服务。基本上,你会找到一些算法、数据结构、一些与字符串相关的类以及一些基本的I/O相关类。与Java或.Net不同,没有各种目的的扩展类库(网络、文件系统服务、加密、并发等)- 最接近的可能是Boost,它看起来和感觉像是标准库的扩展,但仍然是外部的(尽管它的某些部分正在泄漏回标准库)。
除了其他答案之外,我认为你应该看一下QT 工具包。它不仅有 GUI 小部件,还有用于处理数据库、多线程和套接字等事物的库。
在我看来,BOOST 和 QT 的组合为您提供了解决 C++ 中可能面临的任何问题的工具。
需要记住的是,C++主要是一种系统编程语言。因此,它的主要重点不在于执行基本任务,而在于编写用于执行这些任务的工具。例如,C++并没有提供开箱即用的数据库访问库,而是旨在用于编写数据库引擎本身。
假设您已经具备一定的C++语法知识,并且拥有良好的面向对象编程经验,我建议您阅读Effective c++系列。
这是一个“技巧和窍门”的集合,解释了C++在底层是如何工作的。它涵盖了那些来自其他语言的人们常见的误解,以及为什么C++会以这种方式工作。
这取决于你所编程的平台。C++本身没有像Java或C#那样的库。这种功能通常由操作系统提供。我建议你从一本书中学习C++(我喜欢Lippman的C++ Primer,但它可能有点慢,因为它面向初学者),然后如果你在Windows上编程,可以前往MSDN。有关网络、XML解析、加密等几乎所有需要的API都有。它们只是与语言本身不同,而是与操作系统绑定。
我不知道Linux或Mac的相应资源,但我相信有人可以提供。