-
默认情况下,this指针的类型是指向类类型非常量版本的常量指针。对于类A,其一般的this指针类型为:
A *const this;
其常量常量成员函数中的this指针类型为:const A* const this
。 -
编译器处理类的时候,先编译成员的声明,然后才轮到成员函数体。所以成员函数可以随意使用类的其他成员而无须在意这些成员出现的顺序。
-
在类的数据成员的声明中加入mutable,可以使其具有可变性,即使在类的常量函数中,此数据成员也可以被改变。
-
如果没有在构造函数的初始值列表中显示的初始化成员,则该成员将在执行构造函数前被默认初始化。随着构造函数体的执行,初始化就完成了。成员初始化中变量初始化的顺序和其出现在类中的顺序一致,和其出现在初始化列表中的位置无关。
-
如果一个构造函数能用一个实参调用,则实际上定义了转换为此类类型的隐式转换机制(单向转换),把这种构造函数称为转换构造函数。注意点:编译器只能执行一步类型转换。可以使用关键字explicit来关闭上述隐式转换机制。此关键字应作用于能执行隐式转换的构造函数,而不要作用于不能执行隐式转换的构造函数。
-
静态数据成员可以是不完全类型。非静态数据成员不能充当类成员函数的默认实参,而静态数据成员却可以。
-
STL常用数据结构
数据结构 | 特色 |
---|---|
stack | 后进先出 |
list | 双向链表,支持快速增删元素,缺乏对随机访问的支持 |
forward_list | 单向链表 |
vector | 支持随机访问,支持尾端快速增删元素 |
deque | 支持随机访问,支持双端快速增删元素 |
queue | 先进先出 |
priority_queue | 优先级队列,在queue的基础上,增加了元素的优先级,将按照优先级排列元素 |
set | 有序集合,键值唯一 |
multiset | 关键字可重复出现的set |
unordered_set | 用哈希函数组织的set |
unordered_multiset | 哈希组织的set,关键字可重复出现 |
map | 有序关联数组,保存关键字-值对 |
multimap | 关键字可重复的map |
unordered_map | 用哈希函数组织的map |
unordered_multimap | 哈希函数组织的map,关键字可重复出现 |
-
vector<bool>并不是一个容器,其实现方式类似于位域,不能对其元素取地址或者建立引用,因为其元素仅仅是一个比特。然而deque<bool>却是一个容器。
-
当改变了容器的元素后,注意指向容器元素的迭代器、指针、引用可能会失效。比如容器的赋值操作就会导致上述结果。在每次改变容器的操作后都应该重新定位迭代器、指针、引用。
- STL算法
-
随机数
网友评论