文档介绍:-----------------------------------------------------------------------------------------------------------------------防抽区域,由于第一次上传错误,百度文库不给重复上传,所以加此标题,防抽-----------------------------------
声明:此文档是转载的,觉得很经典就传到百度文库,免费给大家观看,绝对珍品,看到这文章的你可以下载下来,当自己在学习C++中感到无助,盲目时,可以在看看,这是一篇很好的文章,值得你收藏,值得你拥有,值得作为我们初学者的学习的”灯塔”
感谢 Tanky Woo 和 杨溪 抽出宝贵的时间为本文审校。在正确性、语法语义和用词上,他们为我提出了很多建设性的意见,我也进行了相应修改。
尽管如此,我相信错误还是再所难免,如果你发现了错误,请给本文留言,谢谢。
缘由
有写这篇文章(确切的说是这种类型方式方法的文章)的想法是几个月之前了(),“不敢下手的原因是自己 C++ 资历尚浅,如果言语不当,实在是害人”。我的这种踌躇也让Tanky Woo 批评过多次了,但是我仍旧抱着胆怯的心里,这种文章涉及的面有点广,还有一个很大的原因是我的太多想法过于偏激。
今天我去论坛回答了两个问题:关于结构体申请内存,c++中输入的问题,像这种类似的问题我在论坛回答过不知道多少遍了,可能每天仍旧有很多人会遇到。于是我有了一个在博客建一个C++ FAQ 目录的想法,用来整理、总结一些常见的、不常见的、诡异的 C++ 问题和解决方案(称作“奇淫技巧”或许要好一点)。恰巧,我对此类问题也甚是关心。我想写一篇怎样学习 C++ 的文章做为 C++ FAQ的序是再好不过的了,以前的种种顾虑用文章谨慎的文字来弥补吧。
笔者
简单的介绍一下笔者,目的在于读者在读本文的时候心里有一个定位:“这是什么样的人写的文章,可不可靠,我应该相信他几分?”我 08 年上的大学,大一上学期学校开设了 C 语言课,下学期学的数据结构,C++ 是在大一暑假自学的(也就是 09 年 6 月份,至今三年有余)。看过一些书(请看
书籍推荐),在校期间用 C/C++,C# 做过很多小项目,自己也写过一些小软件自娱自乐,缺少公司类型大项目的开发经验。算是 C/C++ 的忠实粉丝吧。
关于本文
读者定位是两类人群:,即将入手 C++ 语言、不知道如何开始;++许久了,却进度缓慢,抓不到精髓,倍感迷茫。
本文不会深入到C++语言内部挖掘技术点。
如果你自诩C++高手,请绕道;如果你本就是C++高手,开发经验丰富,可以对本文提一些建议。
本文将结合我自己的学习经历和经验,谈一谈 C++ 应该如何学习,以及扩展到编程领域的一些想法和看法。
文章中提及书籍的时候没有评价。我的书籍推荐中列举了一些 C++ 书籍,都有我的相关评价,感兴趣的可以看一看。
正文
为什么 C/C++?
C++ 是一门编程语言,请注意它仅仅是一门编程语言。这句话的意思就是一旦有人在做语言好坏之争的时候,一笑而过即可。特定的语言只是用来在特定的领域解决特定的问题,仅此而已,尤其是现在众多语言纷飞的年代,这句话的正确性不容置疑。
在编程领域里,每个人都会有他/她的入门语言,各持己见。我个人认为 C 语言是一个很不错的选择,语法简单,深度可深可浅,高级语言的鼻祖。很重要的一点是现今的各种编程语言,或多或少都是 C 语言的衍生品,或者是衍生品的衍生品。语言相通,只要 C 语言学好了,上手其他语言问题不大。C 语言的灵魂在于指针,指针可以帮助你更好的理解内存,理解操作系统的工作机理。
C++ 就是 C 的衍生品之一,兼容 C 语言。起初的目的是扩展 C 语言“C with Classes”,但是后来随着发展,C++ 标准中加入了:虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)等。C++ 变得强大的同时也变的异常复杂,同时随着新内容的增加,C++ 离 C 也就越来越远(思想而非语法)。
C++ 是一门争议性语言,喜欢研究的人很多,吐槽的(包括一些大神级的人物)的人也很多。在 C/C++ 的时代(C/C++刚出道的时候),语言的可选性较少,所以 C++ 干了许多事情,现在时代不一样了,正如我前面所谓语言纷飞,针对性语言众多,程序员的选择性也就多了(有很多的优秀的语言可以去学,C#,java,php,