C++primer笔记————第一章

C++概览
  1. C++对数组类型的支持只限于”用来读写单个元素的机制“。C++不支持数组的抽象,也不支持对整个数组的操作。因此,我们不能用赋值操作符将将一个数组拷贝到另一个中去。
  2. 数组反映了数据与对其进行操作的算法的分离,而这正是过程化横需设计的特征。
  3. 对象可以静态分配,也可以动态分配。
  4. 静态分配和动态分配的区别:
    1. 静态分配是在栈上进行的分配,在程序执行之前进行,效率较高,但是要求程序在执行之前就需要知道所需内存的类型和数量。
    2. 动态分配是在堆上进行的分配。在程序执行的过程中进行,效率较低,但是要灵活很多。效率比静态分配要低。
    3. 静态对象是有名字的变量,我们直接对其进行操作。而动态对象是没有名字的变量。我们通过指针间接的对其进行操作。
    4. 静态对象的分配和释放都是由编译器自动进行处理的。而动态对象的内存分配和释放都是由程序员手动进行管理。如果在使用完动态对象之后忘记释放内存则会产生内存泄漏的情况。而分配和释放是靠new和delete两个操作符来完成。
  5. C++定义的取地址操作符&。
  6. 在C++中,指针的主要用途是管理和操纵动态分配的内存。
  7. 关键字private和public控制对类成员的访问。public成员函数,在一般程序的任何地方都可以访问他们。而private成员函数则只能在该类的成员函数或者友元(friend)中被访问。
  8. C++不允许成员函数和数据成员共享同一个名字,所以当出现同名的时候,一般习惯是在数据成员名字前加一个下划线。
  9. 函数调用会比直接访问内存灯开销要大很多。
  10. 内敛函数在它的调用点上直接展开,一般来说,内联函数不会引入任何函数调用。
  11. 在类定义里定义的成员函数会被自动当作为内联函数。此外,我们也可以用inline关键字显示得要求一个函数被视为内联函数。
  12. 函数重载:函数重载允许连个个或者更多的函数使用同一个名字,只要参数表不同,即为参数数目不同或者参数类型不同。注意,参数名称不同不算为参数表不同。
  13. 被声明为static的数据成员很特殊。这个类的对象无论被定义多少个,该成员只会有一个。因此,它是在类的所有对象之间共享数据的一种方式。
    • 注:被声明为static的对象只能初始化一次,之后的初始化会被直接忽略掉。
  14. 域操作符::表示后面跟着灯成员属于那个域(类或者命名空间)。
  15. 引用是一种没有指针语法的指针。和指针一样,引用提供对对象的间接访问。
  16. 一般来说,析构函数会释放在类对象使用和构造过程中所获得的资源。
  17. 类的构造函数主要用来初始化类对象的数据成员。析构函数主要负责释放类对象在生命周期内申请到的所有资源。
  18. 关键字protected,此关键字修饰的成员派生类可以访问,但是外界无法访问。
  19. 派生类对象实际上是由几部分构成:每个基类是一个类的子对象,它在新定义的派生类中有独立的一部分。
  20. 派生类的初始化过程:
    1. 自动调用每个基类的构造函数来初始化相关的基类子对象。
    2. 执行派生类的构造函数。
    3. 从设计的角度来讲,派生类的构造函数应该只初始化那些在派生类中被定义的数据成员。而不是在基类中的数据成员。
  21. 基类的构造函数和析构函数并没有被派生类继承。
  22. 模板能够将类或函数定义内部的类型参数化。
  23. throw抛出异常,catch捕获异常,但是只会捕获try块之中抛出的异常。
  24. 如果try块内抛出的异常不能被相关联的catch语句处理,那么函数将被异常终止。
  25. 命名空间别名允许用一个可替代的、短的或者更一般的名字与一个现有的命名空间关联起来。
  26. 别名也可以用来封装正在使用的实际命名空间。
  27. 使用using只是符可以使命名空间内的所有声明都可见。当然using声明也可以使命名空间中的单个声明可见。
  28. 为了防止标准C++库的组件污染用户程序的全局命名空间。所有标准C++库的组件都声明在一个被称为std的命名空间内。
  29. 遍历vector的两种方法,使用下标操作符和使用迭代器。当然,更推荐使用迭代器的方法来对vector进行遍历操作。
  30. 迭代器是一个支持指针类型抽象的类对象。
  31. 可以用在vector上的泛型操作:
    1. 搜索:find()、find_if()、search()、binary_search()、count()和count_if()
    2. 分类排序和通用排序:sort()、partial_sort()、merge()、partition()、rotate()、reverse()、random_suffle()
    3. 删除:unique()和remove()
    4. 算数:accumulate()、partial_sum()、inner_product()和adjacent_difference()
    5. 生成和变异:generate()、fill()、transformation()、copy()、for_each()
    6. 关系:equal()、min()、max()
    7. 这些算法的头文件
文章目录
  1. 1. C++概览
,