第1章绪论

开始写笔记之前,我也说两句前言,自己自学c++,为了尽快的找到新工作应对面试,经同学交流,选了一本国外的,讲基础的c++的书,这本《21天学通c++(第6版)》。个人感觉还不错,不过我知道,对c++而言,估计还没开始。努力……

第一章绪论,和大多数书都一样,讲了c++的历史来源,一些相关的最基本的概念和程序员都少不了的Hello World。

我这也闲话少说,至于历史是怎样也管不到,这个读书笔记,就是把这本书中,我认为应该记住的东西记下来,杂谈就算了,这不是随访录。

我想说一点关于c和c++的学习。这是两种语言,没有什么先学c,再学c++比较好。c++是一门独立的语言,完全不需要学好c再来学。就好像我们学英语一样,我们总喜欢把英文翻译成中文,然后再翻译回去。老外英文说得那么溜,根本没用到中文。c和c++也是同样道理。

好了,开始我的笔记:

1. 解释器:就是把指令直接变成对计算机的操作。大多数解释程序或语言就是所谓的脚本,比如在linux的bshell终端下,你执行echo hello world。它就会打印出hello world。它不需要像c++似的,必须写一个程序:

#include <iostream>

using namespace std;

int main()

{

   cout << "hello world" << endl;

   return 0;

}

然后编译连接,生成一个可执行文件,然后你运行这个可执行文件,它才打印hello world。

解释语言或程序要想能够运行,必须要有解释器,就是把这个程序直接翻译成操作的中间部分,没有的话,你的命令式没任何效果的,就像在文本文档中输入echo hello world,然后回车,是没反应的。像python perl shell 等都是脚本语言。Visual Basic 6也有解释器,或称为运行库。Visual Basic.NET 和Java的解释器一般称为Virtual Machine(虚拟机)。

2. 编译器:先将源码换成中间格式,生成目标文件,这步叫做编译;然后编译器调用链接器,将目标文件组合成可执行文件。编译语言生成的程序,不需要额外的中间件来辅助执行,它是可以直接在电脑上运行的。比如exe文件。

3. 面向过程和面向对象:c语言是一种面向对象的语言,你想要的任何东西,都必须你自己写出来,你要个窗口,就要自己create一个,然后确定窗口大小,所在位置等。VB就不同了,你想要个窗口,直接拖一个过来就好了,已经有人写好了,就是需要你设置一下它的属性的动作。这就是面向过程和面向对象的区别。

4. 面向对象的特点:c++也是一种面向对象的语言,你想用动态数组,不用自己写一个函数来实现了,只需包含一下相关的头文件,直接引用就行了。面向对象的语言都有三个特点:封装,继承,多态

4.1 封装:能够成为自包容单元的特性成为封装。概念太拗口,就是一块程序能成为一个整体,对其他模块的调用和访问有所控制。这样的好处就是可以数据隐藏。数据隐藏的好处就是可以让人脱离一些不必要的繁琐,去做更专业的事。比如你会开车但你不用造车,你不用了解制作汽车的各种技术也能有精湛的开车技术。

4.2 继承:你有个函数或是类的架构和实现写的不错,有一个类和这个相似,但又有不同,你要怎么做?把那个拷过来然后改改?不用麻烦了,继承可以帮你解决。就是把程序中相似类或函数的相同点提取出来(提取公因式吗?有点像),编写一个基础的类。然后子类对这个基础的类进行继承,那么,基础类(也就是父类)中写的方法和实现可以在子类中直接用,就不用再写一遍了。这样还可以增加代码的利用率,可以通过这个父类派生很多子类。就是写过的好的通用的东西,保存下来,以后用到就不用写了。直接拿来用。我觉着和中国的成语差不多,比如手到擒来,我说了你就明白什么意思,不用我再解释了,因为背后有一个很经典的故事。比如有个父类是animal,如果有个子类dog继承了这个animal,我不用对dog写任何功能,我们也知道,它是动物,有腿,会发出声音等等

4.3 多态:就是同样的操作,会有不同的反应。比如你按别人家的门铃,可能门铃声和你家的就不一样。这个特点和继承有很大联系。比如上面说的,animal里面有一个eat()函数,它可能就是打印出 eat food。但是dog继承后重写(覆盖)了父类的eat()函数,变成eat meat。所以你调用父类的eat()为eat food,调用dog的eat()为eat meat。再有个子类cat继承animal,覆盖eat()为eat fish。那调用cat的eat()就是eat fish。同样是eat()函数,不同的类调用就不一样,这就是多态。

4.4 其实面向对象还有个特点,就是抽象,这个自己慢慢品味吧。

5. 第一个程序:刚才我也在上面写了这第一个程序:

#include <iostream>

using namespace std;

int main()

{

   cout << "hello world" << endl;

   return 0;

}

在编译链接,就能生成一个可执行文件,运行就会输出hello world了。如果用vs2010的或是其他IDE的同学,发现运行一下,就一个黑框一闪,什么都没看到,可以这样写

#include <iostream>

using namespace std;

int main()

{

   char a;

   cout << "hello world" << endl;

   cin >> a;

   return 0;

}

或是在最后大括号一行设置一个断点。

下章见(以上全是个人观点,如果不当,敬请提出)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章