C++ for the C#程序员

9

我对java和C#中的面向对象有很好的理解,而且在我的工程课程中,我有幸接触到汇编和C语言(指针是我的游乐场 :D )。

然而,我尝试了解C++,但困扰我的是库代码。在java和C#中,有很多很好的示例,展示如何执行基本任务,但我没有找到一个好的解释来说明如何在C++中进行这些操作。

我希望扩展我的知识,学习C++以增加我的技能,但我还没有机会接触到热衷于这些事情的人和社区。

请问是否有人可以推荐一些有用的开源项目或教程。如果涉及从java或C#转换到这个环境,将获得额外的加分。

6个回答

10

我建议你通读优秀的Andrew Koenig和Barbara Moo的书“Accelerated C++”(经过清理的亚马逊链接)。这本书教授C++,而不是假设你已经了解了C,然后再去看C++的细节。

事实上,在早期章节中,你就会开始使用STL容器。

强烈推荐。


2
C++语言的特性不太可能像构建过程那样令人沮丧。在Java和C#等语言中,这相对简单。对于新手来说,C++编译错误可能会很棘手,链接错误可能会非常糟糕。 - mungflesh
1
FYI,他们现在已经取消了你的链接的消毒处理。为了收入! - Spence

5

很遗憾,我没有这样的资源可以提供给你,因为我是通过逐步发现事物的方式来学习的。

不过,我有一个注意事项要告诉你:请记住,在C++世界中,标准库一直缺乏有用的服务。基本上,你会找到一些算法、数据结构、一些与字符串相关的类以及一些基本的I/O相关类。与Java或.Net不同,没有各种目的的扩展类库(网络、文件系统服务、加密、并发等)- 最接近的可能是Boost,它看起来和感觉像是标准库的扩展,但仍然是外部的(尽管它的某些部分正在泄漏回标准库)。


是的,我已经阅读了很多关于Boost的内容,他们的一些东西(尤其是智能指针)似乎非常有趣。我想如果没有一个好的库,要使你的代码可用就更加困难。 - Spence
Boost是一个必备的库,但它是高级C++:对于初学者来说,理解其内部结构是困难的。 - Edouard A.
同样的话也适用于任何大型库框架。“Python 具备电池集成”是必不可少的,然而对于初学者来说理解 Python 的内部运行机制是困难的。 - Aaron

5

除了其他答案之外,我认为你应该看一下QT 工具包。它不仅有 GUI 小部件,还有用于处理数据库、多线程和套接字等事物的库。

在我看来,BOOST 和 QT 的组合为您提供了解决 C++ 中可能面临的任何问题的工具。


如果我可以在这里标记两个答案,我会的。也许我应该提出两个不同的问题。你的答案解决了我的库问题。干杯 :) - Spence

2

需要记住的是,C++主要是一种系统编程语言。因此,它的主要重点不在于执行基本任务,而在于编写用于执行这些任务的工具。例如,C++并没有提供开箱即用的数据库访问库,而是旨在用于编写数据库引擎本身。


1

假设您已经具备一定的C++语法知识,并且拥有良好的面向对象编程经验,我建议您阅读Effective c++系列。

这是一个“技巧和窍门”的集合,解释了C++在底层是如何工作的。它涵盖了那些来自其他语言的人们常见的误解,以及为什么C++会以这种方式工作。


1

这取决于你所编程的平台。C++本身没有像Java或C#那样的库。这种功能通常由操作系统提供。我建议你从一本书中学习C++(我喜欢Lippman的C++ Primer,但它可能有点慢,因为它面向初学者),然后如果你在Windows上编程,可以前往MSDN。有关网络、XML解析、加密等几乎所有需要的API都有。它们只是与语言本身不同,而是与操作系统绑定。

我不知道Linux或Mac的相应资源,但我相信有人可以提供。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接