《C++ Primer》经典语句(一)

简介: 第一篇 CH1 1.       试图一下子就能写出一个完全成功的程序几乎是不可能的。 2.       一个简单的错误常常有很多关联影响,会使编译器报告的错误比实际要多得多。

第一篇

CH1

1.       试图一下子就能写出一个完全成功的程序几乎是不可能的。

2.       一个简单的错误常常有很多关联影响,会使编译器报告的错误比实际要多得多。因此,一旦错误被改正后,应当马上重新编译。

3.       三个预定义iostream对象: cin、cout和cerr

 

CH2

1.       在C++中,数组不同于整数类型和浮点数类型,它不是C++语言的一等(first-class)公民。

2.       在C++中,指针的主要用处是管理和操纵动态分配的内存。

3.       静态与动态内存分配的两个主要区别是:1)静态对象是有名字的变量,我们直接对其进行操作;2)静态对象的分配与释放由编译器自动处理。

4.       内存泄漏(memory leak)是指一块动态分配的内存,我们不再拥有指向这块内存的指针,因此我们没有办法将它返还给程序供以后重新使用。

5.       类名代表的是一个新的数据类型,我们可以用它来定义这种类类型的对象,就像用内置的类型定义对象一样。

6.       类定义包括两个部分:类头(class head),由关键字class与相关联的类名构成。类体(class body),由花括号括起来,以分号结束。

7.       类的成员包括“该类能执行的操作”和“代表类抽象所必需的数据”。这些操作称为成员函数(member function)或方法(method)。

8.       公有成员提供了该类的公有接口(public interface)——即实现了这个类的行为的操作集合。它包括该类的所有成员函数,或者只包括其中一个子集。私有成员提供私有实现代码(private implementation)——即存储信息的数据。

9.       信息隐藏(information hiding):类的公共接口与私有实现代码的分离。

10.   在类定义中被定义的成员函数会被自动当作是内联函数(inline function)。此外我们也可以用inline 关键字显式地要求一个函数被视为内联函数。

11.   程序设计中的一个常见错误是使用事先并没向被正确初始化的对象,所以C++为用户定义的类提供了一种自动初始化机制:类构造函数(class constructor)。

12.   构造函数是一种特殊的类成员函数,专门用于初始化对象。如果构造函数被定义了,那么在类的每个对象第一次被使用之前,这构造函数就被自动应用在对象上。

13.   构造函数的名字与类的名字相同,不能给构造函数指定返回值,并且可以给类定义多个构造函数。

14.   函数重载(function overloading)允许两个或更多个函数使用同一个名字,限制条件是它们的参数表必须不同:参数类型不同,或参数的数目不同。

15.   缺省构造函数(default constructor)不需要用户提供任何参数。

16.   C++类的关键特征是接口与实现的分离。接口是一些“用户可以应用到类对象上的操作”的集合。它由三部分构成:这些操作的名字,它们的返回值,以及它们的参数表。

17.   在C++中被继承的类被称作基类(base class)。新类被称作从基类派生(derived)而来,把它叫做基类的派生类(derived class)或子类型(subtype)。

18.   子类型与基类共享公共的接口(common interface)——公有操作的公共集。类之间的类型/子类型关系形成了继承或派生层次关系(inheritance or derivationhierarchy)。

19.   在继承机制下有多个类的提供者:一个提供基类实现(可能还有一些派生类),另外一个或多个提供者在继承层次的生命周期内提供派生类。

20.   C++提供了另外一个访问级别:保护(protected)级别。在类的保护区域内的数据成员和成员函数,不提供给一般的程序,只提供给派生类。

21.   派生类对象的初始化过程是这样的,首先自动调用每个基类的构造函数来初始化相关的基类子对象,然后再执行派生类的构造函数。

22.   异常(exception)是指在运行时刻程序出现的反情形;异常处理(exception handling)为“响应运行时刻的程序异常”提供了一个标准的语言级的设施。

23.   关键字namespace后面的名字标识了一个名字空间,它独立于全局名字空间,我们可以在里面放一些希望声明在函数或类之外的实体。名字空间并不改变其中的声明的意义,只是改变了它们的可视性。

24.   名字空间别名(namespace alias)允许用一个可替代的、短的或更一般的名字与一个现有的名字空间关联起来。

25.   using指示符(using directive)使名字空间内的所有声明都可见,这样这些声明能够不加限定地使用。

26.   using声明(using declaration)提供了选择更为精细的名字可视性机制,它允许使名字中的单个声明可见。

27.   我们实现的(Array)类模板与vector类模板的实现之间有两个主要区别:第一个区别是vector类模板支持“向现有的数组元素赋值”的概念以及“插入附加元素”的概念——即vector数组可以在运行时刻动态增长(如果程序员希望使用这个特性的话)。第二个区别是更加广泛,代表了设计方法的重要转变。

28.   能够应用到向量上的操作:搜索(search)算法,分类排序(sorting)与通用排序(ordering)算法,删除(deletion)算法,算术(numeric)算法,生成(generation)和变异(mutation)算法,关系(relational)算法。
目录
相关文章
|
3月前
|
C++
来自C++ Primer 5的函数指针的定义,调用等
来自C++ Primer 5的函数指针的定义,调用等
14 0
|
5月前
|
编译器 Linux C语言
C++Primer 【学习笔记】第一章 深思
main 函数在很多方面都比较特别,其中最重要的是每个 0+程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显式调用的函数。
33 0
|
6月前
|
存储 编译器 程序员
C++ Primer Plus 第6版 读书笔记(10) 第十章 类与对象
C++ Primer Plus 第6版 读书笔记(10) 第十章 类与对象
37 0
|
6月前
|
存储 关系型数据库 编译器
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
61 1
|
6月前
|
存储 算法 编译器
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
32 1
|
6月前
|
存储 Java 编译器
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(一)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(一)
23 0
|
7月前
|
存储 算法 前端开发
C++Primer 第一章 开始
C++Primer 第一章 开始
61 0
|
8月前
|
存储 编译器 C++
【C++ Primer Plus】基础知识 2
【C++ Primer Plus】基础知识
62 0
|
8月前
|
编译器 C++
【C++ Primer Plus】基础知识 1
【C++ Primer Plus】基础知识
96 0
【C++ Primer Plus】基础知识 1
|
8月前
|
小程序 C++
C++ Primer Plus 第三章编程练习
C++ Primer Plus 第三章编程练习