<<C++ Primer>>读书笔记
Stanley B Lippman(美国人)
Josee Lajoie(加拿大人) 著
译序
在所有的编程语言中,C++可以说是最为复杂的。
C++是计算机软件领域中覆盖面最为广阔的编程语言。
C++是一门多风格的程序设计语言(multi-paradigm Programminglanguage),不仅支持面向对象程序设计,也支持其他的程序设计思想。
前言
Stan是Bell实验室中与Bjarne Stroustrup(C++的发明者)一起工作的早期成员之一。从1984年开始一直从事C++方面的工作。
(略)
第一篇 C++ 概述
我们编写的程序由两个主要方面组成:
1.算法的集合。(就是将指令组织成程序来解决某个特定的问题。)
2.数据的集合。(算法在这些数据上操作,以提供问题的解决方案。)
纵观短暂的计算机发展史,这两个主要方面(算法和数据)一直保持不变。发展演化的是它们之间的关系,就是所谓的程序设计方法(programmingparadigm).
抽象数据类型(abstract data type,简写为ADT)
继承机制是对现有实现代码的重用,动态绑定是指对现有的公有接口的重用。
1 开始
解决大问题的一种方法,是把它分解成许多小问题。理想情况下,这些小问题可以很容易地被解决。然后,再把它们合在一起,就可以解决大问题了。如果新分割的小问题解决起来还是太大,就把它分割得再小一些,重复整个过程,直到能够解决每个小问题。这个策略就是分而治之(divideand conquer)和逐步求精(stepwise refinement)。
#include <iostream.h>
void readIn(){cout<<"readIn()\n";}
void sort(){cout<<"sort()\n";}
voidcompact(){cout<<"compact()\n";}
void print(){cout<<"print()\n";}
int main()
{
readIn();
sort();
compact();
print();
return 0;
}
首先,我们应当让我们得程序执行起来。一个比较好的解决办法是提供哑函数。以后,我们会用真正的实现函数来代替这些哑函数。
这种渐进式生成程序的方法,为控制程序设计中不可避免的错误,提供了一种有效的控制手段。试图一下子就能写出一个完全成功的程序,几乎是不可能的。
编译C++程序时,编译器自动定义了一个预处理器宏_cplusplus.因此,我们可以根据它来判断程序是否是C++程序,以便有条件地包含一些代码。
例如:
#ifdef _cplusplus
//不错,我们要编译C++
//extern"C" 到第7章再解释
extern"C"
#endif
int min(int,int);
在编译标准C时,编译器将自动定义名字_STDC_.当然,_cplusplus与_STDC_不会同时被定义。
今晚在业软等妹妹回家,随便翻了一下<<C++ Primer>>,在前三章中,主要有两个知识点需要注意:
1.为什么通过使用limits或limits.h头文件中的定义就可以了?
答:因为这个头文件是由编译器厂商提供的,编译器所能运行的硬件平台,操作系统肯定是已知的,当然,编译器厂商就知道limits或limits.h中该怎么定义了。这样,只要使用limits或limits.h中的定义,我们总是能够获取到正确的东西,比如int的最大值和最小值是多少
2.该如何选择变量类型,比如int和long?
答:参考<<C++ Primer>>
第4章