条款一:视C++为一个语言联邦
做为一个半路出家的IT人,断断续续的学习编程也学了有两年多了,经过两年多的学习,感觉现在才开始慢慢的入门,
刚开始学的时候感觉学习编程语言就是学习编程,慢慢的才感觉到语言只是一个解决问题的工具而已,他就是人与计算机交互的一
个媒介,跟汉语、英语等没有什么本质的不同,相反别那些语言简单多了吧,后来慢慢的不在去刻意的去学习语言的一些语法什么
的,每次用到了在去查阅对应的知识点,当不是为学习一门语言来学习一门语言的时候,在回去看那些曾经看过的书的时候想法真
的很不一样一样了,后续我要将自己看过的一些书的笔记整理下来,一是对整理下自己的思路,也为自己以后的学习提供参考,当
然如果能碰巧帮上别人那是我最大的荣幸!~
最近在看Effective C++这本书,这是我第二遍看,感觉比第一版深,后续将自己的学到的东西记录下!
C++是一门复杂的语言,你学的越深会越感觉到他的复杂,当你感觉到C++中到处都是坑的时候,我感觉也就慢慢的开始
入门了,C++就想是一个联邦体,他是有很多的模块组合成的:主要有四个模块:
1. C。C++是由C语言继承而来的,必然对C有很好的兼容性,这一部分主要包括C中的一些语言,库函数等,对于C中
的一些头文件在C++中都做了一些标志,以用来说明这些事C++从C中继承来的,例如:stdlib.h 在C++中就可以用cstdlib来
代替,C++中库函数一般都是不是以.h结尾的,当然自定义的头文件除外,(个人感觉,无任何参看,可能是错的)!
2.C with class。这个是C++的核心,也就是通过这个来实现了C语言中的由面型过程的编程转变为了C++中的面型
对象的编程,通俗的讲就是在C中程序都是由一个个的函数模块构成的,当然全局的变量除外,在C++中是有多个的类组合而成的,
除main,友元函数,全局变量外,没有其他的函数,这里也定义了C++的特征:封装(类的定义)、继承(子类是特殊的父类)、多
态(主要通过虚函数实现,同样类型的参数可以传入不同的实参类型以完成不同的函数调用),这个是C++的核心也是C++面向对象
的基础,要能真正的理解。
3.template C++。指的是C++中的模板编程,这一部分可能是最容易被人忽略的,我这一部分也是学习的比较弱,相
关的书也不是很多,明天将入手一本,打算好好的看一下,这一部分主要是泛型编程,一开始可以简单的理解为对于一个函数或者
是一个类,我们在使用的时候要指定这个函数或者类要处理的类型,这样如果多个类型具有相同的处理过程,那么我们就可以将这
个函数作为一个模板的形式,将要处理的参数抽象出来,可以动态的绑定!
4.STL。标准模板库,主要是以template C++为基础实现的,里面提供了很多有用的类和对应的算法,帮助我们很好
的结果了C语言中要自己去解决的问题,主要有容器(数组就是一个特殊的容器)、迭代器(智能指针,之所以用迭代器是为了通用
性)、算法(包括容器特殊的算法和容器间通用的算法)、函数对象(能想函数一样被调用的对象,通过重定义对象中的()操作符来完
成的)、适配器(可以理解为修改了容器接口实现的一种容器),这一部分是c++强大的后盾,学习C++。不能不学STL,不仅会用最
好能知道STL中成员的实现方式,这样就能更加高效的使用!
在C++中的不能模块,编程的方式可能会用所不同,要想高效的使用她们,必须对他们的内部的实现有一定的理解,并
且的不断犯错的基础上才能真正的熟练!