Java程序员如何高效而优雅地入门Cpp,因为工做须要,须要用C++写一些模块。关于C++ 的知识结构,虽然说我有过快速学习不少新语言的经验,但对于C++ 我也算是老手,但也还须要心生敬畏,本文会从一个Java程序员的角度,制定高效学习路线快速入门C++ 。Java是为了就业,C++ 是信仰。(C++ 是教学、信仰、商业这三个本来互斥的概念(这三个概念也是三个阶段,正好能够陪咱们一块儿成长)的恰恰集合体)。程序员
关于C类语言的基本思想,能够为学习C++ 定下基调。下面经过斯特鲁普(C++发明者)对Java程序员的字字珠玑的建议,再加上个人理解和总结,列出几点“中心思想”。不要试图用C++ 来编写Java程序。不能依赖垃圾收集器了。同为面向对象语言,但要采用C++ 本身的抽象机制【类和模板】。
要理解C++ 与C语言是各个方面都不一样的程序设计语言(虽然最先C++ 是做为“带类的C”出现的),不要由于虚假的熟悉感而将代码写成C。
C++ 标准库很重要很高效,要很是熟悉。
C++ 程序设计强调富类型、轻量级抽象,但愿能细细体会。
C++ 特别适合资源受限的应用,也是为数很少能够开发出高质量软件的程序设计语言。
C++ 的成长速度很快,要与时俱进。
必定要有单元测试和错误处理模型。
C++ 将内置操做和内置类型都直接映射到硬件,从而提供高效内存使用和底层操做。
C++ 有着灵活且低开销的抽象机制【核心掌握】(可能的话以库的形式呈现),而不是简单的如Java同样上来就给全部类创造一个惟一的基类。
尽可能不使用引用和指针变量,做为替代,使用局部变量和成员变量。
使用限定做用域的资源管理。
对象释放时使用析构函数,而不是模仿finally:避免使用单纯的new和delete,应该使用容器(例如vector,string和map)以及句柄类,(例如lock和unique_ptr)使用独立函数来最小化耦合,使用命名空间来限制独立函数的做用域。
不要使用异常规范。
C++ 嵌套类对外围类没有访问权限。C++ 提供最小化的运行时反射:dynamic_cast和type_id,应更多依靠编译时特性。零开销原则,必须不浪费哪怕一个字节或是一个处理器时钟周期(C++ 是信仰)。
C++ 是系统程序设计语言(例如驱动程序、通讯协议栈、虚拟机、操做系统、标准库、编程环境等高大上有技术深度的系统),而Java是业务开发语言(例如XXX管理系统,电商网站,微信服务号等基于B/S架构的上层UED相关的应用),高下立判(鄙视链是有道理的)。算法
学习C++ 最重要的就是重视基本概念(例如类型安全、资源管理以及不变式)和程序设计技术(例如使用限定做用域的对象进行资源管理以及在算法中使用迭代器),但要注意不要迷失在语言技术性细节中。
学习C++ 必定要避免深刻到细节特性中去浪费掉大量时间,了解最生僻的语言特性或是使用到更多数量的特性并非什么值得炫耀的事情,尚学堂•百战程序员陈老师指出学习C++ 细节知识的真正目的是:在良好设计所提供的语境中,有能力组合使用语言特性和库特性来支持好的程序设计风格。编程
因此,使用库来简化程序设计任务,提升系统质量是很是必要的,学习标准库是学习C++ 不可分割的一部分。(遇到问题先找库,这一点我想每一个Java程序员骨子里都是这么想的,不会钻到细节中去。)领悟编程和设计技术比了解全部细节重要的多。而细节问题不要过度担忧,经过时间的积累,不断的练习天然就会掌握。安全
Java程序员如何高效而优雅地入门Cpp,C++ 除了标准库之外,有大量的标准库和工具集,如今有数以千计的C++ 库,跟上全部这些库的变化是不可能的,所以仍是上面那些话,要经过组合使用个语言特性以及库特性来支持好的程序设计风格,因此熟悉这些库的领域(没必要钻进去一一研究)以及领悟编程设计技术才是核心点。
微信