你会建议我用什么项目来加快C++的速度

tat*_*tou 5 c++ project

我知道C++是一门非常复杂的语言,需要多年的练习才能掌握.

考虑到这一点你知道一个小项目(大约1k左右)测试所有C++主要功能(继承,指针,内存管理等).

问题是我是一名Java/Python程序员,我真的想学习C++,所以我已经学习了一段时间的C++,但没有测试过我在小练习之外学到的东西.

我想把所有这些知识付诸实践.

sha*_*oth 10

单独这样做会产生许多有害的习惯.与在C++开发方面具有高能力并在指导下进行培训的公司实习相比,要好得多.

C++就像没有安全别针的手榴弹 - 看起来很酷,你听说所有"真正的专业人士"都使用它,但你不知道什么时候爆炸.大量的功能,可以用于善或恶,而不知道它是真的好还是坏.这就是为什么指导必须在这里.


dir*_*tly 8

内存管理器.这应该会让你思考:

  • 免费店铺管理
  • 指针(当然!)
  • 继承(你会希望你的驱动程序代码使用它)
  • 模板(传递经理的另一种方式 - 驱动程序#2)
  • 设计用户定义的数据结构(内存块)
  • 有效使用标准容器
  • 算法(移动,找出空块,碎片整理)


Tim*_*Tim 6

有效的C++更有效的C++

除此之外,选择一个你想写的(小?)个人项目并用C++完成.您不会通过阅读1000行项目来学习C++.


jal*_*alf 5

我不确定测试所有主要功能的任何东西.其中有很多,有些很少一起使用(模板和虚函数都会浮现在脑海中.两者都实现了多态性,所以你经常根据自己的需要使用其中一种.)

因为它会在所有重要的功能触摸一个合适的项目可能是这样显然简单的像写一个正确的容器类,类似的std ::向量或std ::名单.确保异常安全性,迭代器有效性,所有操作的适当时间复杂性以及标准中指定的所有其他要求.

这个以及大多数其他项目的问题在于,你不知道什么时候完成.制作可调整大小的数组可能需要50行代码和20分钟的时间.然后一个初学者会认为他已经完成了.使其异常安全需要您能够通过异常发现可能将类抛出到不一致状态的所有位置.

这是C++的一个普遍问题.很容易认为你得到它,编译器肯定不会通知你你忘记处理的方面.所以你可能认为你的代码是完美的,然而它会因各种奇怪的特殊情况而崩溃.

正如锐齿所说,对于像C++一样混乱的语言,自己编写代码是有风险的.很容易陷入"我编写了一些代码,它编译并且它似乎运行的陷阱.因此它是正确的".当然,您可以在此处或在其他网站上发布您的代码以供审阅,或者只是通过阅读有关实际高质量C++代码的文档来补充您的编码(大多数boost库往往具有全面的文档,指定了各种设计决策的基本原理,以及它如何安全地处理所有在C++中出现的奇怪的特殊情况.当然,C++标准本身将是另一个优秀的资源.在任何一种情况下,这些都可以帮助你确定需要注意的问题)