何时开始学习C++

zeb*_*und 1 c++

我已经用Java和C#编写了大约4-5个月的编码.很棒的语言,但我觉得我已经准备好迈出下一步了.我急于开始学习c ++,而且我已经开始学习c ++了,但我确实很难接受它.在使用它时,学习和完成任何事情确实需要付出更多的努力,我觉得我真的无处可去.我该怎么办?我应该继续使用Java编程吗?如果是这种情况,请给出一个很好的理由:我真的很想学习C++,因为它迫使我去做,以及我在这个过程中可以学到的东西.

如果我应该用C++继续,这里的问题是......我应该在哪里开始呢?我一直在研究的大多数教程(Memory Pools,XML Parsing等)都是我脑海中浮现的东西.

我也只运行Linux,因此就任何.NET而言,它几乎仅限于MonoDevelop 2.4.

cha*_*ley 8

恕我直言,学习新语言的最佳方式是"宠物项目".

你会犯错误,你的代码会变得一团糟,你会回顾你的混乱并意识到你应该抛弃所有的东西.但是,您对每个增量功能感到兴奋,并且您喜欢"宠物项目",以至于您可以想象它的形状.它可以作为一个良好的"稻草人"模型,作为外部可观察的特征,是一个有用的系统,当你再次启动它.

对于C++,编写一个可以上下翻译音乐音阶的程序.生成角色扮演游戏角色.创建一个文本冒险游戏.有数以万计的选项,但如果你想学习语言,而不是GUI库,那么我将继续使用命令行处理工具.

恕我直言,C++是思考计算机如何工作的好方法,每个设计选项都可供您使用.我经常使用多种语言,但C++是我最喜欢的语言之一,所以我会(偏见)建议你继续学习C++.

[更新]再次,我的偏见,但恕我直言,如果你正在学习C++,那么学习C++.您可能不想立即开始使用标准模板库(STL).迭代器很奇怪,你必须将你的大脑从"典型的"面向对象模型中转移出来才能使用它们.他们是"数学上优雅的",但他们不是非常面向对象,恕我直言.是的,继续使用std::vector<>(因为你不应该自己编写vector),但这应该是"真正"类中实际做某事的"数据成员".例如,class MyGame可以有一个或多个数据成员,可能是std::vector<Player*>std::vector<GameBoardSquare*>.(目标是std::vector<>使用您编写的"真实"类包装,其中"真实"类表示您的逻辑问题域.)


Chr*_*ung 6

当你来自Java和C#时,C++很难,因为与托管语言相比,它具有完全不同的执行模式.

例如,您不需要依靠垃圾收集器为您拾取未使用的对象,而是需要使用智能指针,以便跟踪删除对象的时间.此外,对象删除的概念(更一般地说,对象具有特定的,有限的生命周期,与大多数托管语言不同)意味着您必须知道对象何时被释放或无效且无法再次触摸.

这方面的一个例子是STL容器.您可以使用迭代器访问这些容器(想想类固醇的指针),但是有关迭代器何时失效的非常挑剔的规则.vector例如,如果使用a ,则必须在任何时候展开向量,所有现有的迭代器都将失效,不能再使用了.经验丰富的C++程序员知道这些规则就像他们手中的背部一样,但对于新手而言,这是一个陡峭的学习曲线.

换句话说,你有很多学习知识.如果你想进入非托管编程,它的学习值得拥有,但决定权归你所有.:-)