C++学习的方法以及四大名著(荐)

C++学习的方法以及四大名著(荐)

转眼间学习和使用C++已经有近10个年头了,开始学习的时候走了不少的弯路,今天有些时间,希望写下这篇文章并且对开始学习C++的朋友有些帮助。当然我首先需要说明的是,这篇文章是根据本人的感受写的,可能不同的人有不同的观点,欢迎讨论。

开始学习C++的时候中国的互联网环境还不是很好,信息也比较闭塞,所以自己开始的时候是由Thinking
in C++ 开始的,买了两卷本的英文版,废了好大的一番周折才算看完了,这个过程大约花费了近6个月的时间,当然期间也要花时间完成学业。后来就有这个根基开始了不断的写代码,做ACM的题,渐渐开始了C++真正的旅程。

时至今天我发现,其实这个过程可以更轻松,只要有过来人稍微点播一下,于是有了写这篇文章的想法。其实学习C++的读书顺序应该是这样的(对于有C基础的朋友):

C++ Primer

Effective C++

Exceptional C++

Inside the C++ Object Model

这就是我选的C++四大名著,那么我为什么选这四本书呢?

C++ Primer 这本书我看过第三版和第四版,目前这本书已经出到了第五版,不得不说,这本书太适合入门了,当然我指的是有C基础,而且基本上所有的语言特性都给予了说明,可以说是大而精。同等地位的书有C++
Programming Language 和 Thinking
in C++ 这两本书我也读过,但是个人认为,读了C++
Primer再看这两本书意义不大。

Effective C++ 和Exceptional
C++ 这两本书并不厚,但是涵盖的知识面是一般的C++书籍所无法企及的,可以说如果没看过这两本书就不算合格的C++程序员,俗话说磨刀不误砍柴,这两本书就是磨刀的,但是这两本书都不简单,建议看完了C++
Primer再看。

Inside the C++ Object Model看这本书可能需要一点功力,薄薄的一本书,足够全力的研读一周,一旦通关了可以说对于C++的理解可以到达另一种境界。

关于这些书籍是读中文版还是英文版的问题

我的建议是买一本中文版,找一本英文的电子版(可以去买电子书),直接读中文版,然后感觉可能翻译有问题的地方对照着看。为什么这么说呢,因为根据我的经验,这样读书的效率更高。而直接读英文版和所谓的“评注版”意义都不大,读书的时候会相对的浪费精力,这个和英语水平没关系,除非英语你的母语。

关于标准库和泛型编程的学习

这方面确实是对C++语言的增强,但是编码难度相对较大,也特别容易被人忽视,但是C++发展到今天标准库和泛型编程已经和完整,而且确实可以提高生产力,建议在看看相关的书籍,有时间写篇这方面的文章。

总结

本问总结了学习C++的一些需要注意的问题,并且推荐了四大名著,相信只要按照顺序修炼,大家一定可以学好C++的,祝大家功力更上一层楼。

时间: 2024-10-20 12:00:29

C++学习的方法以及四大名著(荐)的相关文章

专家修炼-学习的方法

学习要尽早开始.终身进行,同时学习也是要讲究方法的.不讲究学习方法的人即使尽早开始也是事倍功半乃至蹉跎终身. i.人脑的学习原理 现代神经科学和认知科学认为,几乎没有任何技能是人一出生就会的.哪怕是对简单物体的识别,把东西抓取过来这些简单的动作,也是婴儿后天学习的结果.人脑的巧妙之处在于提供了一个能够学习各种技能的能力.与计算机不同,人对于技能的掌握是在大脑硬件层次实现的.人的任何一个技能,都是大脑内一系列神经纤维传递的电脉冲信号的组合.解剖表明拥有不同技能的人,其大脑的神经结构非常不同,比如出

RhinoMock学习-Stub方法

// Arrange var stub = MockRepository.GenerateStub<IDemo>(); stub.Stub(x => x.StringArgString(Arg<string>.Is.Equal("input"))).Return("output"); // Act var firstCallResult = stub.StringArgString("input"); var sec

Junit4学习笔记--方法的执行顺序

package com.lt.Demo.TestDemo; import java.util.Arrays; import java.util.Collection; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; im

学习IOS--description方法\NSLog函数

1.description方法是NSObject自带的方法,包括类方法和对象方法 + (NSString *)description; // 默认返回 类名 - (NSString *)description; // 默认返回 <类名:内存地址> 2.默认情况下利用NSLog和%@输出对象的时返回的就是类名和内存地址 3.修改NSLog和%@的默认输出:重写类对象或者实例对象的description方法即可.因为NSLog函数进行打印的时候会自动调用description方法 /*******

学习的方法,献给 刚刚起步的你们

我是学习.net 的,也是处于学习阶段的, 不过 在这一年多的学习中, 也积累了 一定的经验 , 因为 常 常 也有朋友找我帮他们修改代码 ,或是 解决一些问题, 感觉 ,每个人的学习方式 都是不一样的, 并且 ,有的人 虽然 很用心去学,但是 总是很茫目, 不知道怎么去学好它, 以至 以后在一些小问题上都会感觉到很困惑    记得曾经 , 我刚刚开始学习的时候  , 总是会遇到一些问题,而 当这个问题迟迟得不到解决的时候,我的信心几乎会丧失, 那些日子我也很迷茫 , 虽然 感觉 自己 能很简单

学习的方法

其实学习的方法最重要的就是可以整理重点也叫大纲,以点带面. 说具体一点其实就是书本的目录.学习的时候先要了解自己要学什么,然后根据书本目录去理解目录内容, 在短时间内通过书本目录完全了解目录所讲的内容,然后再深入的去看这本书,当你再自己总结出一套自己的目录时,那么你就完全掌握了. 然后可以进而总结一下,办任何事其实都是先总结重点和大纲,比如软件,也是要先写方案.概要需求.需求说明书.开发需求.概要设计等等,其实都是在总结重点和大纲. 在这里比的就是谁总结.理解重点准确和理解的深刻和快速了. 学习

前面学习通过方法对代码进行改进,为什么要给方法使用静态呢?

前面学习通过方法对代码进行改进,为什么要给方法使用静态呢? 答:因为main方法是静态的,而静态方法只能访问静态的成员变量和静态的成员方法. 所以之前我们的方法是使用静态来修饰的,即静态的方法. 如果我们把static去掉呢?即该如何调用非静态的方法呢? 答:通过创建对象,使用对象进行调用啊! 测试类的作用是什么? 答:创建其他类的对象,调用其他类的功能. 在同一个文件夹下,Java的类定义在两个文件中和定义在一个文件中其实是一样的.-------------------------------

Java学习:方法的使用与注意事项

方法的使用与注意事项 定义一个方法的格式:public static void 方法名称(){ 方法体 } 如何调用方法,格式: 方法名称(): 方法名称的命名规则和变量一样,使用小驼峰. 方法体:也就是大括当中可以包含任意条语句. 方法定义好了之后,不会执行.如果要想执行,一定要进行方法的[调用]. 方法其实就是若干语句的功能集合. 方法好比是一个工厂. 奶粉工厂 原料:奶牛.饲料.水 产出物:奶制品 钢铁工厂 原料:铁矿石.煤炭 产出物:钢铁建材 参数(原料):就是进入方法的数据. 返回值(

Java学习的方法

我作为万千Java程序员的一名程序员,J2EE应用程序的开发者来说,Java的开发者正深陷于复杂性的泥沼中而无法自拔.我们的经验和能力正接近于极限,程序员编写支持所选框架的程序所花的时间比解决实际问题的时间要多太多.我们有时候会想,有必要把Java搞得这么繁复吗?.答案是否定的.无论是维护应用程序,还是从头开始设计,你都能够超越成规,并大幅精简基本框架.开发过程和最终代码.我们只需要重点学习其中的一部分技术就可以了,对于其他部分只要做到心中有数,哪天需要用到了知道跑哪里去找到资料就行了!想学习J