导读:作者之前发布了《如何学习C语言》,现介绍如何学习C++的相关建议。
昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。
C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章。C++是一门很自由的语言,自由到了有点BT和恐怖的地步。我甚至认为C++并不是一门成熟的编程语言,因为太容易犯错了。所以,你一定要在一开始就要有很小心谨慎的态度,并把C++当成一种难以训服的猛兽来看待。
多问“为什么要这样”的问题。学习C++一定要多问几个“为什么是这样”,“凭什么要这样”的问题。比如:很多人知道C++有拷贝构造函数和初始化列表,但你真的知道为什么要有拷贝构造函数?为什么要有初始化列表吗?为什么要有template,为什么要有 RTTI,为什么不是别的呢?难道就是为了让一门语言变得Cool一些吗?完全不是这样的,C++中的任何一个feature都有些实实在在的原因,你一定要去了解为什么要把C++设计成这样的原因,你才能学好C++。有空看看《C++演化和设计》一书。
看书,大量的C++书。你可以按如下先后顺序阅读(下面这些书,我花了大约4-5年的时间,今天我还在随时温习)《C++ Primer》,这本初级读本可能让会你啃得很痛苦,所有的语言的特性和为什么都在里面了,好好读读。当然由C++之父写的《C++程序设计语言》也不错。两本看一本就好了(我看的是前者)。了解C++的语法仅仅是万里长征的第一步,你还需要看看《Effective C++》和《More Effective C++》这两本书并不厚,但我从02年就一直看到现在,每次读我都有新的体会,这两本书太经典了。如果你对C语言不熟,这两本书会让你回去补C语言的课。Think in C++同样是另一本经典之极的书,学c++必读,但是中文版的翻译的很不好,所以还是去读英文版的吧。《C++沉思录》同样非常值得一读,这里教的不是编程,而是思考的方法,这是相当珍贵的。《Exceptional C++》和《More Exceptional C++》让你看看各种问题的解决方法和一些常见的经典错误。《Advanced C++》和《Modern C++》可以让你知道C++各种神奇的用法。《泛型编程与STL》是把C++实践到了极致的东西。很强大。STL——神一样的模板库(容器,算法和函数对象),不得不服。
《深入探索C++对象模型》让你了解编译器下的C++是什么样的,让你了解C++的性能并不差。这个对于C++的程序员太关键了。我以前写过的《C++虚函数表解析》还有《C++对象内存布局》属于这个范畴。
和Java语言做对比。我个人以为Java对C++这个并不成熟的语言做了很多调整,规范和限制。所以,对比一下Java和C++,想一想,为什么一些东西在C++中可以做,但在Java中却不行。比如:Java的异常是必需要catch的,不然就会编译不通过。为什么Java不提供操作符重载?为会Java会引入接口来做多重继承?等等。Java体现着很多面向对象设计的东西,学习Java有助于你学会怎么更好地使用C++来编程。
面向对象设计 。虽然面向对象可能是个骗局。但是我觉得面向对象设计中的一些实践非常的不错,比如,单一原则,依赖倒置原则,等等,都非常地经典。《设计模式》必需一读,《面向对象的分析和设计》可以一读。但不可以设计模式为中心来编程,而应该是用设计模式来解藕。
类库学习。看看MFC是怎么封闭Windows API的,看看ACE是怎么面向对象的,看看boost是怎么玩面向对象的,看看CPPUnit又是怎么设计的。当然,Java的JDK中有太多的设计模式,可以参考。
分享到:
相关推荐
"从 Java 到 C++, 适合 Java 程序员快速学习 C++" 这篇文章旨在帮助 Java 程序员快速学习 C++,通过比较 Java 和 C++ 的区别,帮助读者快速理解 C++。以下是从 Java 到 C++ 的知识点总结: 数据类型和变量 * C++ ...
c++学习的经验 交流c++学习经验 首先要说明的是,C和C++是两件截然不同的东西,学习C++可以完全没有C的基础,或者说可以完全不用先学C;但是,这样你是永远也不可能成为真正的C++大师的;你最多只能成为一个C++的...
学习c++的好帮手,学习c++的一个典型例子
学习C++的一些资料和程序,可以参考。.zip学习C++的一些资料和程序,可以参考。.zip学习C++的一些资料和程序,可以参考。.zip学习C++的一些资料和程序,可以参考。.zip学习C++的一些资料和程序,可以参考。.zip学习...
学习C++的第一课,新手让我们一起来学习C++吧
### C++ 学习笔记精华版 #### 一、C++ 语言概述 **1、历史背景** - **C++ 的江湖地位** - Java、C、C++、Python、C# 是当前主流的编程语言之一,而 C++ 在这些语言中以其高效性和灵活性著称。 - **C++ 之父 ...
在下收集整理出一套学习C++的方法,与大家共同分享学习C++的快乐。
这本书对于想要掌握C++11新特性的开发者来说,是一份极具价值的学习资料。书中详细介绍了C++11中的STL(Standard Template Library,标准模板库)以及C++语言的新特性,帮助读者全面理解和应用这个强大的编程工具。 ...
很好的PPT 学习C++的资料 欢迎大家下载 学习
C++学习是Android客户端目前最全面的免费离线C++学习书籍,提高C++二级考试成绩、增强C++自学能力,内容包括: 1、C++数据类型、控制语句、循环、数组等基础 2、C++逻辑算法练习题 3、C++函数、指针 4、C++内存...
一个学习C++Builder的好网站http://www.ccrun.com/index.asp
这篇文档集合提供了全面的C++学习资源,包括高清PDF格式的教程,对于初学者和进阶者都是宝贵的资料。 1. **C++基础知识**:C++是C语言的扩展,它引入了类、模板、异常处理等面向对象编程概念。学习C++首先要掌握...
学习C++程序设计语言(第4版 郑莉等著) 时书写的相关代码学习C++程序设计语言(第4版 郑莉等著) 时书写的相关代码学习C++程序设计语言(第4版 郑莉等著) 时书写的相关代码学习C++程序设计语言(第4版 郑莉等著) 时书写的...
C++学习建议 itle:50条重要的C++学习建议(绝对值得一读) 描述:50条重要的C++学习建议(绝对值得一读),给你详细的建议与指导,定有收获 标签:50条重要的C++学习建议 部分内容: 1.把 C++当成一门新的语言...
自己在网上学习C++的一些记录,主要是抄写网络上的一些关于C++基础学习的文章,帮助自己理解与记忆,上传以作备份只用同时也分享给大家学习~
C++,学习必备手册,由浅入深学习C++,C++精华学习.c++ c++
学习 C++ 的 50 条忠告(初学者必看) 本资源摘要信息总结了学习 C++ 的 50 条忠告,旨在帮助初学者快速掌握 C++ 语言。以下是对标题、描述、标签和部分内容的详细解释: 标题解释:学习 C++ 的 50 条忠告(初学者...
详细介绍了该如何学习C++的书籍,把C++最重要的读物按照由浅到深的层次排列。