从 C# 切换到 C++。有啥必读的吗? [关闭]

Posted

技术标签:

【中文标题】从 C# 切换到 C++。有啥必读的吗? [关闭]【英文标题】:Switching from C# to C++. Any must-reads? [closed]从 C# 切换到 C++。有什么必读的吗? [关闭] 【发布时间】:2008-09-16 00:00:46 【问题描述】:

我正在尝试找到一条从 C# 到 C++ 的阻力最小的路径,虽然我觉得经过两年的稳固,我能很好地处理 C#,但我仍然不确定我是否已经掌握了 C++ 的“槽”,尽管多次尝试。

是否有任何特定的书籍或网站可能适合这种过渡?

【问题讨论】:

【参考方案1】:

大约两年前,我从 C# 切换到 C++(在编写 Java 10 年后)。对我来说最有用的书是 Bruce Eckel 的 Thinking in C++ [AMZN]。您也可以通过Eckel's website 在线阅读本书。这是一本写得很好的书——你可以在床上阅读的那种——作为键盘参考也很有用。它假定您对 OO 和一般编程概念非常熟悉。

Stroustrup [AMZN] 作为参考是非常宝贵的,但除非你试图回答一个非常具体的问题,否则基本上是难以理解的——即便如此,这也是一场斗争。几年来我还没有破解我的 K&R [AMZN]。我不认为它作为 C++ 参考有多大价值。 Myers 的Effective C++ [AMZN](一旦你到达那里,Effective STL [AMZN])都是很棒的书。不过,它们非常具体(例如,“36. Design functor classes for pass-by-value”),因此在进行转换方面不如 Eckel 有用。

在编写托管语言多年后,我编写 C++ 的经验非常棒。 C++ 的表达能力是 C# 的 100 倍,而且编写起来非常令人满意——这是有保证的。另一方面,在我仍然可以编写 C# 的极少数情况下,我总是对自己能够快速简洁地完成工作感到惊讶。

无论如何,Eckel 的Effective C++ 可以帮助您进行过渡。有第二卷很好,但没有那么好。坚持原来的。

祝你好运!

【讨论】:

我认为您的意思是 Bruce Eckel 的《Thinking in C++》一书,对应的链接指向该书。【参考方案2】:

我推荐 Bjarne Stroustrup 的 C++ 编程语言。这不是一本适合新程序员的书,但我发现它对于有其他语言经验并且不想浪费太多时间来学习 while 循环如何工作的程序员来说非常有效。这是一本内容丰富但相当全面的书。

【讨论】:

这听起来是选择这本书的绝佳理由。正是我需要的。谢谢!【参考方案3】:

我建议您阅读The C++ Programming Language 的书(由 Bjarne Stroustrup 撰写)。它可能不是最好的书,但绝对是你迟早应该读的。

【讨论】:

该死的,你就在我前面。哦,好吧…… 是的,这可能有点令人沮丧:) 先生。扬科维奇,我想联系你。我怎样才能做到这一点?我对你的项目有疑问。请帮帮我。【参考方案4】:

Meyers 写的任何东西,same 推荐的,或Sutter 写的任何东西。

【讨论】:

【参考方案5】:

由 Koenig 加速的 C++(编辑:和 Moo。)

【讨论】:

【参考方案6】:

它们是完全不同的野兽,因此它们之间没有最小的阻力路径。但是,我建议您事先阅读http://www.phpcompiler.org/doc/virtualinheritance.html,以防您需要重要的继承。它可以为您省去一些麻烦。

【讨论】:

【参考方案7】:

Bjarne Stroustrup 的《C++ 编程语言》是必读的。 Effective C++ (Scott Meyers) 是我觉得很有帮助的另一本书。

为了平衡这一切,请阅读 C++ FQA (http://yosefk.com/c++fqa/) - 虽然它不是一本书,但它是一种宝贵的资源,我希望在我开始使用 C++ 时能够访问它。只是不要让它气馁。

【讨论】:

【参考方案8】:

我发现 Lippman 等人的“C++ Primer:第 4 版”非常出色。它从一开始就强调 STL 的使用、最佳实践和 auto_ptr 的使用。我从 Java 职位转到 C++ 作业,这真的很棒。

作为一个纯粹的参考,Josuttis 的“C++ 标准库”是最好的 STL(也是最糟糕的......这家伙真的不会出拳)

最后,正如其他人所说,Meyer 的 Effective C++ 是 C++ 固有的“陷阱”的必读书籍

【讨论】:

【参考方案9】:

这是#C++ EFNet 中人们推荐的书籍列表:http://rafb.net/efnet_cpp/books/

【讨论】:

【参考方案10】:

我认为 [K&R](http://en.wikipedia.org/wiki/The_C_Programming_Language_(book)) 是 C++ 的先决条件。也许 C++ 最好的一点是它是一个更好的 C。

当然,Stroustrup(根据 Mladen Jankovic 的建议)是必读的。

【讨论】:

【参考方案11】:

我的两本标准书籍是“C++ 中的面向对象编程”,第三版,由 Robert LaFore 所著,由 Waite Group 出版,以及由 Herbert Shildt 所著的“C++ from the Ground Up”,由 Osborne McGraw-Hill 出版。

【讨论】:

我根本不是 Lafore 的忠实粉丝。我现在正在阅读它,虽然它对 C++ 的元素非常好,但它绝对没有提供关于什么是好的实践的指导。函数章节将全局变量解释为将数据传递给函数的另一种方式,并没有警告说可能有更好的方式。【参考方案12】:

您应该阅读已发布的其他书籍之一,然后还要阅读The Design & Evolution of C++。它可以帮助您深入了解该语言正在尝试做什么。

【讨论】:

以上是关于从 C# 切换到 C++。有啥必读的吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 迁移到 C++ [关闭]

有啥方法可以调试从 C# DllImport 调用的 c++ dll?

注册 C# 委托给 C++ 回调,Marshal.GetFunctionPointerForDelegate 有啥作用?

从 C# 到 C++ 的编组

PInvokeStackImbalance C# 调用非托管 C++ 函数

当我从 C 和 C# 过渡到 C++ 时,我可以期待有啥不同?