我非常了解C#(自学成才,可悲),并且需要为Windows应用程序进行一些C ++编程。对于能够学习C#的C ++开发人员,我已经找到了很多信息,但是当您已经了解C#时,就没有太多关于学习C ++的信息。有没有人遇到过一个很好的基础知识?
MSDN可以进行比较,但是比较不深入。
我可以整理几个来源,但发现其中有些东西-我只是找不到。谢谢你的帮助。
我非常了解C#(自学成才,可悲),并且需要为Windows应用程序进行一些C ++编程。对于能够学习C#的C ++开发人员,我已经找到了很多信息,但是当您已经了解C#时,就没有太多关于学习C ++的信息。有没有人遇到过一个很好的基础知识?
MSDN可以进行比较,但是比较不深入。
我可以整理几个来源,但发现其中有些东西-我只是找不到。谢谢你的帮助。
Answers:
Java开发人员在C ++上使用的该线程非常相似,应该很有用,尤其是Mark Byer的帖子:
阅读这些书:
要记住的最重要的事情可能是了解C#/ Java和C ++在内存管理技术上的区别。
我的一位教授来自Java背景,并教授了介绍性的C ++课程,认为那将是蛋糕。他的解释对任何人都没有任何意义。他到处都有内存泄漏。他的指针算法很糟糕。他从来没有参加过教学大纲的OOP部分(感谢上帝)。他展示的东西几乎没有汇编。他不明白那char[]
需要哨兵\0
。不要像他那样结局。
char[]
中没有人使用的可惜,不是吗?
char[]
很少在C ++中使用它并不意味着它没有被教或不应该被教。char[]
请务必注意,因为C ++是C的超集,并且必须要完全理解它,如果要学习它,则势在必行。
std::string
,并且如果您必须与C API互操作,那就c_str()
可以了。程序员char[]
在任何情况下都无需处理或终止为NULL。对于C语言风格的字符串处理,除了与旧的C代码互操作(完全由)很好地处理之外,它在所有可能的用途上都完全彻底弃用了c_str()
。
char[]
,因为所有的使用char[]
都是错误的。你的教授可能早就精绝如果他坚持C ++而不是C.
不幸的是,关于C ++的基本知识并不多,所以我对您的希望不高。此外,您对C#甚至可以远程移植到C ++的了解很少,因此我不希望存在涵盖该角度的任何特定材料。您需要从头开始学习。
cout
和实现简单目标的简单方法
对此没有简单的解决方法,C ++并不是特别困难,但对于初学者来说并不容易。
我建议您阅读C编程的基础知识(以了解您会发现的低级内容),然后学习STL,然后再阅读Scott Meyers之类的文章。这是一个入门,它显示了与C-with-classs相比,您应该如何编写现代C ++。
reading up on C programming
。我认为这样做弊大于利,并传达出这样的观念,即C和C ++是需要一起研究的语言。
delete
C数组以及其他在C ++中不鼓励使用的东西要比使用它们少得多,这归因于我没有明确研究C。C相对简单,您可以很快弄清楚代码的作用。
malloc
和free
。一个优秀的C ++开发人员最终将想要了解它们。从他们开始完全是另一回事。
我不确定您是否还在寻找材料,几个月前我发现了这篇文章。这不是一本书(只有53页)。简介说明了一切:
This is a somewhat short guide to the important things to know if you are a C# programmer and find yourself needing or wanting to work in C++
http://geekswithblogs.net/mikebmcl/archive/2012/02/02/c-to-c-ndash-a-somewhat-short-guide.aspx
还有一个更新帖子:
快乐学习:)
因此,大约一年前,我与您同在:自学成才的C#开发人员,他觉得有必要学习C ++。当然,我停下来多次。在第三次尝试时,我终于坚持了下来。
必须了解的是,就C ++和C#方法论而言,您可能会花费大量时间来了解实际上通过指针和引用进行的数据处理方法含义,以及在特定情况下何时以及如何使用它们。
关于C ++的好处是,对象堆栈的分配在大多数情况下都非常简单,如果程序满足此方法指定的要求,则应以这种方式分配对象。否则,您将依靠指针来提高速度,效率和快速清理速度。我建议阅读以下内容:http : //www.parashift.com/c++-faq-lite/,因为它可以使您对C ++的工作原理有很多技术了解。
让我给你举个例子:
在C ++中,存在此构造器实现,称为“初始化列表”,与在构造器主体中初始化类成员不同。为什么?因为除非初始化的类型是原始类型,否则编译器实际上将创建多个且不必要的在分配给ctor的主体中时创建所创建对象的副本。这可能会降低性能,具体取决于编译器以及应用程序的扩展需求。
知道代表是什么吗?好吧,在C ++中,它被称为函数指针。这种语言一开始很难掌握,但是如果您想变得很棒……那绝对是必需的。
C#很容易...非常容易。
相信我,选择一本有关C ++的好书(还有更多内容,只需搜索即可)并开始学习...