《C++ Primer》读书笔记

来源:互联网 发布:app数据统计模板 编辑:程序博客网 时间:2024/05/01 18:37

<<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章