我是一名Java程序员,有一点C知识,想要开始使用C ++,有人可以推荐一个好的教程吗?
也有任何帮助:
答案 0 :(得分:6)
取决于您的目标平台,我使用Visual Studio作为IDE。
与Java相反,C ++的一般规则是它包含比Java更多的自由,特别是关于模板与泛型,堆栈与堆,以及对象的实施(或缺乏)方向和它的原则。例如,C ++提供了封装破坏的友元语句,const_cast,在堆栈上分配对象,指针可以指向它们,模板具有比泛型更强大的功能等。
您必须习惯的另一个主要问题是资源管理。 C ++不提供GC。您需要熟悉RAII(资源获取是初始化)以及基于范围的构建和销毁如何工作以避免资源泄漏。
您还需要了解标准模板库(STL)。 STL具有比Java库更直接的方法 - 例如,std :: iostream类提供从文件中提取浮点数,字符串等的本机方法,而在Java中,您需要文件和扫描程序,尽管它是范围更加有限 - 没有基于GUI或基于目录的组件,仅适用于初学者。
哦,顺便说一句,严肃地说,放弃你的C知识。它会伤害而不是帮助你。
答案 1 :(得分:4)
好教程?
没有教程建议,因为教程很可能不会触及更复杂的语言功能。拿一本书。
要学习的项目
Qt 4一旦熟悉语言,任何使用STL / Templates / Qt的项目。提升源代码可能值得学习。
推荐阅读
任何Bjarne Stroustrup关于C ++的书。重读,但作为参考,一本关于设计模式的书也可能有用。
什么是IDE?我目前使用NetBeans
Windows上的Visual Studio Express,Linux上的jEdit / Kate / mcedit / vim / emacs。
一般C ++建议
了解如何使用外部构建系统(cmake / scons / gnu make),如何在没有IDE的情况下工作,如何在命令行中工作,并尝试避免非标准的编译器特定功能。
答案 2 :(得分:1)
In silico提供的阅读链接是一个很好的阅读链接。
我最大和最一般的建议是熟悉Boost图书馆并熟悉RAII(Resource Allocation is Initialization)并以此为生!
我不是NetBeans的用户,但是如果你喜欢它并且它是一个C ++插件,那么我建议你开始使用它。如果你不必要的话,在创建另一个你正在尝试学习新语言的环境时没有任何意义。话虽如此,我是一个Eclipse用户,并且它的C ++(CDT)插件非常好。
答案 3 :(得分:1)
获取像Deitel and Deitel这样的大学教科书风格的C ++书籍。设计可重用的库时,困难的部分是学习语言的所有细节,但如果你只是拼凑现有的部分,那么如果你已经了解Java,那就不应该太糟糕了。声明为普通变量的对象,它的指针,以及您需要学习的引用以及资源管理之间存在细微差别。一旦掌握了语言,就可以使用像Stroustrup和Meyers这样的经典作品填补空白。
根据IDE的说法,您应尽可能多地尝试Visual Studio,X Code,Anjuta和Eclipse,并查看您最喜欢的内容。您可能还应该学习使用Make(或SCons)和vi。
在没有IDE的情况下构建的方法对于项目,你应该首先坚持使用CUI,因为与Java不同,没有标准的GUI实现,但最终你想要实现类似俄罗斯方块或矩阵数学库的东西,它很适合OO。 wxWidgets和Qt是跨平台的,如果你想让它跨平台,但你应该针对你感兴趣的平台。
答案 4 :(得分:1)
。这本书也不在链接中,我用它:
使用Robert Lafore在C ++中进行面向对象编程,它假设为零背景,而且非常简单。
。对于IDE Visual Studio常用于像我这样的初学者:)。
。作为一个很好的例子,您可以尝试为“复数”创建一个具有自己的添加,删除,乘法和除法成员函数的类。您将学习在该类中封装数据和函数以及操作符重载
前:
int i1 = 5 ;
int i2 = 6 ;
int i3 ;
i3 = i1 + i2 ; //correct
complex c1.setreal(3) ; //here you learn about member functions of the class
complex c1.setimg(5) ;
complex c2.setreal(6) ;
complex c2.setimg(8) ;
complex c3 ;
c3 = c1 + c2 ;//wrong until you overload the operator +
答案 5 :(得分:0)
IDE的一些建议:
答案 6 :(得分:0)
Scott Meyers的推荐阅读
有效的C ++ 。
答案 7 :(得分:0)
第6版C++ Primer Plus将于2011年9月发布。